【发布时间】:2011-08-15 16:36:15
【问题描述】:
我有一个主窗口,上面有一些小部件,每个小部件都需要自己的图形。我想使用 QPainter 在它们上绘制形状、线条等,但只能在特定事件之后,例如按下按钮。
问题是,如果我只是在任何函数中创建一个 QPainter,它就不起作用:
QPainter::setPen: Painter not active
QPainter 方法只能在paintEvent(QPaintEvent *) 函数内调用!这会引发以下问题:
我必须为我想要绘制的所有小部件派生我的自定义类,所以我不能使用设计器来放置我的小部件。使用大量小部件可能会令人沮丧。
窗口的每个绘制事件后,小部件会重新绘制自己,例如移动它,或移动它前面的其他窗口。我在这些小部件中做了很多绘图,所以在这些情况下它们会明显闪烁。
有没有更好更简单的方法来解决这个问题?我开始考虑只显示图像,并仅在按下特定按钮时重新制造这些图像。我怀疑这是最优雅的解决方案......
【问题讨论】:
标签: c++ qt user-interface