-1

私はいくつかの Qt コードを調べており、単に を使用するのではなくQMessageBox、プログラムQAPPLICATION_Hが が定義されているかどうかをチェックしていることがわかります。そうでない場合は、デフォルトのシステム メッセージ ボックスが使用されます。外観は次のとおりです。

bool Connect()
{
        ...
        {
#ifdef QAPPLICATION_H
            QMessageBox::critical(0,QString("Error!"),QString("Cannot Connect To PS3"));
#else
            MessageBoxA(0,"Error!","Cannot Connect To PS3",MB_ICONINFORMATION);
#endif
            return false;
        }
        else
        {
            ...
            #ifdef QAPPLICATION_H
            QMessageBox::information(0,QString("Sucess!"),QString("Connected To PS3!"));
#else
            MessageBoxA(0,"Sucess!", "Connected To PS3", MB_ICONINFORMATION);
#endif
            return true;

        }
}

基本的に、私の質問は次のとおりです。互換性はQMessageBox何ですか? のみを使用するプログラムをリリースした場合QMessageBox、Qt を使用していない人はメッセージ ポップアップを表示できませんか? 自分のコードで毎回これをチェックする必要はありません。また、標準の非 Qt ボックスは見た目が悪くなります。

4

1 に答える 1

0

Qt はクロス プラットフォームです QMessageBox は、コードをコンパイルするどのプラットフォームでも利用できます。リストされたコードで MessageBoxA の定義と呼び出しが行われている理由がわかりません。ターゲット プラットフォームが Windows の場合、開発者はより多くのウィンドウのルック アンド フィール メッセージ ボックスを表示できるようにしたかったのかもしれません。

于 2016-01-09T10:39:43.103 に答える