我一直在研究如何使用QT
在屏幕上绘制文字,而我却无法弄清楚为什么它没有绘制文字。
这是我使用的代码:
#include "dialog.h"
int main(int argc, char ** argv)
{
QApplication a(argc, argv);
Dialog w;
w.show();
QPainter painter(&w);
painter.drawText(100,100,"hello");
return a.exec();
}
当我在对话框类中使用它时,当我覆盖paintEvent
函数时,它确实有效,但是如果它在主函数中也不起作用吗?
答案 0 :(得分:2)
有充分证据表明,您只应在paintEvent
内进行绘制。
http://qt-project.org/doc/qt-5/QPainter.html#details
http://qt-project.org/doc/qt-5/qwidget.html#custom-widgets-and-painting
http://qt-project.org/doc/qt-5/qwidget.html#paintEvent
http://qt-project.org/faq/answer/how_can_i_paint_outside_the_paintevent
您可以使用QPixmap
作为QPaintDevice
并绘制到QPixmap
上,然后在paintEvent
函数中进行渲染,从而解决此问题。此外,如果您尝试在主GUI线程之外使用QPixmap,您将收到运行时警告并可能发生一些崩溃。要使用GUI线程之外的图像,您需要使用QImage
,然后当您返回GUI线程时,可以将其转换为QPixmap
。
希望有所帮助。