使用QT在屏幕上绘制文本

Drawing text to the screen using QT

本文关键字:绘制 文本 屏幕 QT 使用      更新时间:2023-10-16

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

有充分的证据表明,您应该只在paintEvent内部绘制。

http://qt-project.org/doc/qt-5/QPainter.html#details

http://qt-project.org/doc/qt-5/qwidget.html#custom-小工具和绘制

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

希望能有所帮助。