2012-02-29 4 views
0

私はコードを持っている:QtのUIThreadWidget

void ChildThread::run() 
{ 
    pUIThreadWidget->fun(); 
} 

void UIThreadWidget::fun() 
{ 
    emit Signal(); 
} 

void UIThreadWidget::Slot() 
{ 
    //operations about UI 
} 

UIThreadWidget::UIThreadWidget() 
{ 
    connect(this, SIGNAL(void), this, SLOT(void)); 
} 

pUIThreadWidgetUIThreadWidgetへのポインタです。

QPixmap:GUIスレッド外でpixmapsを使用することは安全ではありません。」というエラーメッセージが表示されますが、エラーはなく、プログラムはクラッシュしません。私の質問は、このコードはスレッドセーフですか?

+1

ナー、それは安全でないと言っている警告...何も意味しません。 –

+0

このコードは私の同僚によって作成されています。私はあなたの言ったことについて彼に話しました。しかし、エラーやクラッシュがほとんどないため、彼は私を信じていませんでした。 –

答えて

3

QPixmapはディスプレイ依存で、画面上に画像を表示するように設計され、最適化されています。

基本的なグラフィックスシステムにアクセスします。ほとんどのグラフィックスシステムはスレッドセーフではありません。したがって警告です。

QImageをお試しください。

+0

これは正しい解決策です。ワーカースレッドで 'QImage'を使って作業し、それをGUIスレッドに戻して' QPixmap'に変換することができます。 –

+0

これは私がabouyしたいことではありませんが、あなたの提案は私の将来にとって非常に重要です。ありがとう! –