gpt4 book ai didi

qt - Golang与Qt在paintEvent中的绘画问题

转载 作者:行者123 更新时间:2023-12-01 20:23:00 25 4
gpt4 key购买 nike

我正在使用这个 Golang Qt 绑定(bind) 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()
}

最佳答案

您还没有激活 QPainter 实例。
查看https://doc.qt.io/qt-5/qpainter.html#begin

关于qt - Golang与Qt在paintEvent中的绘画问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59674955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com