使用QT在屏幕上绘制文本
Drawing text to the screen using 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
函数时,它确实有效,但如果它也在主函数中,它应该不起作用吗?
有充分的证据表明,您应该只在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
。
希望能有所帮助。
相关文章:
- QPainter 将 QBrush 设置为 在 QT/C++ 中绘制文本
- 绘制文本问题
- SFML 2.4.2 - 绘制文本时出现分段错误
- 在 Qt C++ 中在自定义项委托上绘制文本时的性能问题
- 如何在透视视图中绘制文本
- Qt:用不同的字体绘制文本
- Linux绘制文本模式(无GUI,桌面)
- 使用Glstipple时,Oglft绘制文本
- 绘制文本和文本剪辑
- 有效地在 QPainterPath 周围绘制文本
- DirectWrite GDI 互操作:使用"IDWriteFontFace"绘制文本的简单方法
- DrawStatustext仅在后续呼叫上不在第一次呼叫上绘制文本
- SFML 在绘制文本时崩溃
- QPainter 未正确绘制文本
- 当我使用 DirectWrite 在 GDI hdc 上绘制文本时,如何设置透明背景
- 如何在 DirectWrite 中使用默认 UI 字体绘制文本
- Win32 绘制文本在重建后仍然存在
- 如何使用SKIA SKBITMAP在EGL纹理上绘制文本
- Windows 8 现代 UI 应用程序和 DirectX.如何绘制文本
- 在没有项目的情况下使用 Dev c++ 在窗口中绘制文本