登录
首页 >  Golang >  Go问答

Golang 与 Qt 在 PaintEvent 中绘画时出现问题

来源:stackoverflow

时间:2024-04-29 08:57:36 233浏览 收藏

来到golang学习网的大家,相信都是编程学习爱好者,希望在这里学习Golang相关编程知识。下面本篇文章就来带大家聊聊《Golang 与 Qt 在 PaintEvent 中绘画时出现问题》,介绍一下,希望对大家的知识积累有所帮助,助力实战开发!

问题内容

我在这里使用这个 golang qt 绑定来创建一个简单的代码编辑器。我将 paintevent 回调处理程序连接到实际的编辑器,我正在尝试在其中进行绘画。正如我在各种论坛中发现的那样,这是应该完成绘画的唯一点。 但是,当调用 painter := gui.newqpainter2(ce.editor) 时,我收到一些警告输出

qwidget::paintengine: should no longer be called
qpainter::begin: paint device returned engine == 0, type: 1

当调用 setpen 函数时,我收到消息

qpainter::setpen:画家未激活

这是该问题的一个工作示例

package main


import (
    "os"

    "github.com/therecipe/qt/widgets"
    "github.com/therecipe/qt/gui"
    "github.com/therecipe/qt/core"
)

type CodeEditor struct {
    editor *widgets.QPlainTextEdit
}

func NewCodeEditor(parent *widgets.QWidget) *CodeEditor {
    codeEditor := &CodeEditor{editor: widgets.NewQPlainTextEdit(parent)}
    codeEditor.setupSignals()
    return codeEditor
}

func (ce *CodeEditor) setupSignals() {
    ce.editor.ConnectPaintEvent(ce.paintEvent)
}

func (ce *CodeEditor) paintEvent(event *gui.QPaintEvent) {
    painter := gui.NewQPainter2(ce.editor)
    color := gui.NewQColor6("red")
    painter.SetPen2(color)
    painter.DestroyQPainter()
}

func main() {
    core.QCoreApplication_SetAttribute(core.Qt__AA_ShareOpenGLContexts, true)
    widgets.NewQApplication(len(os.Args), os.Args)

    mainWindow := widgets.NewQMainWindow(nil, 0)
    codeEditor := NewCodeEditor(nil)

    mainWindow.SetCentralWidget(codeEditor.editor)
    mainWindow.ShowMaximized()

    widgets.QApplication_Exec()
}

解决方案


您尚未激活 QPainter 实例。 检查https://doc.qt.io/qt-5/qpainter.html#begin

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>