使用QT将文本绘制到屏幕上

时间:2014-08-30 17:49:11

标签: c++ qt

我一直在研究如何使用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函数时,它确实有效,但是如果它在主函数中也不起作用吗?

1 个答案:

答案 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

希望有所帮助。