【发布时间】:2020-01-19 06:49:26
【问题描述】:
我正在使用这个 Golang Qt 绑定 here 创建一个简单的代码编辑器。我正在将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: Painter 未激活
这是该问题的一个工作示例
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()
}
【问题讨论】: