2014-08-30 127 views
0

我一直在努力學習如何繪製文本到屏幕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

我想'刪除S;'不應該實際上是這個片段的一部分嗎? – Erik 2014-08-30 18:20:45

+0

不,我從一個控制檯應用程序GUI試圖口我的服務器和我忘了刪除最後一部分 – AnonymousUser 2014-08-30 18:27:56

回答

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

希望有所幫助。

+0

謝謝這就是我需要的東西 – AnonymousUser 2014-08-30 17:58:29

+0

也有一些其他的繪圖元素,如Qt的圖形視圖,可能是靠近繪圖你希望實現的模型。 Qt Graphics View比paintEvent的子類更復雜,但它爲持久對象和縮放和翻譯提供了更多的靈活性,以及​​類似的東西。 – phyatt 2014-08-30 18:00:35