0

私はこのように開くQDialogを持っています:

void MyModule::openDialog() {
    this->dialog->open();
    printf("Hello World");
}

ダイアログは問題なく開きますが、残念ながら、openDialog()を呼び出したときに、ダイアログを閉じた後でも「HelloWorld」は出力されません。ただし、後でまったく関係のない別のファイルダイアログを開くと、メッセージが出力されます。

別のダイアログが開くまでダイアログがブロックされる原因は何ですか?this->dialog->exec();またはを使用している場合も同じことが起こりthis->dialog->show();ます。

MyModule::openDialog()それはボタンのクリックイベントに接続されているスロットであることに注意する価値があるかもしれません。

何か案は?

4

2 に答える 2

4

OSによって異なりますが、通常、printf()はGUIでうまく機能しません。

たとえば、Windowsでは何も表示されませんが、UNIXではfprintf(stdout、)を実行してから、バッファリングされていないfflush(stdout)またはfprintf(stderr、)を実行できます。

これが単なるデバッグ関数である場合は、qDebug()を見てください。これが目的です。

于 2011-02-12T00:07:12.410 に答える
1

stdoutはバッファリングされます。呼び出し printf("Hello world"); は、出力バッファーがいっぱいになるか、(場合によっては)改行が出力されるまで何も出力しません。printf("Hello World\n");代わりに電話してみてくださいまたはprintf("Hello World\n"); fflush(stdout);

于 2011-02-12T04:14:22.143 に答える