当前位置: > > > > Golang 与 Qt 在 PaintEvent 中绘画时出现问题
来源:stackoverflow
2024-04-29 08:57:36
0浏览
收藏
来到的大家,相信都是编程学习爱好者,希望在这里学习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 实例。 检查
今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注公众号,一起学习编程~