1

メッセージ ボックスを表示するには、次のコードを使用します。

int ret = QMessageBox::question(this,"Title","Stupid code",QMessageBox::Yes | QMessageBox::No);

すべてが期待どおりに機能しますが、メッセージ ボックスのタイトル バーを削除したいと考えています。どうすればこれを達成できますか?

私は使いたくない:

QMessageBox msgBox("Title" , "Stupid code", QMessageBox::Question, QMessageBox::Yes | QMessageBox::No, this, Qt::FramelessWindowHint);
msgBox.exec();
4

1 に答える 1

1

と同じ引数を受け入れるXMessageBox静的メンバ関数を持つ独自のクラスを作成して、ラッパー関数を作成することをお勧めします。ラッパー関数で、関数に与えられた引数を使用してオブジェクトを作成し、さらにフラグを呼び出して戻り値を渡します。この方法では、コード内のすべてのwithを検索して置換するだけで済みます。question()QMessageBox::question()QMessageBoxQt::FramelessWindowHintexec()QMessageBox::questionXMessageBox::question

より柔軟性が必要な場合は、question()関数に型の追加の引数を受け入れさせ、これをコンストラクターQt::WindowFlagsに渡すことができます。QMessageBox

コードを変更せずにやりたいことを実行できる唯一の方法は、Qt コード (qmessagebox.cpp) を変更して Qt を再コンパイルすることです。

于 2013-05-17T22:21:00.703 に答える