1

Qt を使用して、複数のサブ ウィンドウを持つ GUI を作成しています。同じためにMDIエリアを使用しています。mdi サブウィンドウの上部ツールバーを非表示にしたいのですが、ウィンドウ フラグを使用しても効果がありません。

以下のようにコードを書いてみました。最初に mdiarea を試し、次にサブウィンドウを試しましたが、どちらもうまくいきませんでした。

mdiarea.setWindowsFlags(Qt::FramelessWindowHint);

subwindow.setWindowsFlags(Qt::FramelessWindowHint);

Qt::CustomizedWindowHint も使用してみましたが、それでも役に立ちません。これで私を助けてください。

ありがとうございました。

4

1 に答える 1

1

これを試して:

mdiArea->addSubWindow(new QLabel("Qt::FramelessWindowHint"), Qt::FramelessWindowHint);

MDI 領域自体をフレームレス ウィンドウとして設定したくないのは、それが別のウィンドウに埋め込まれている可能性が高いウィジェットだからです...おそらく既にフレームを持っていないからです。

「サブウィンドウ」の設定は機能するはずですが、addSubWindow(myWidget)実際には渡されたウィジェットを実際のサブウィンドウにラップするため、それが間違っていました。Qt では、ウィンドウ フラグを の 2 番目のパラメーターとして渡すことができaddSubWindow()、これらのフラグは実際のサブウィンドウに送られます。

フレームレス ウィンドウでは、ウィンドウをドラッグして移動したり、ウィンドウの端をつかんでサイズを変更したりできないことに注意してください。

最小化ボタンと最大化ボタンだけを消したい (でも閉じるボタンは必要) 場合は、Qt::Dialog代わりに渡してみてください。

これらも試してみてください:

addSubWindow(new QLabel("Qt::Tool"), Qt::Tool);
addSubWindow(new QLabel("Qt::Tool|Qt::CustomizeWindowHint"), Qt::Tool|Qt::CustomizeWindowHint);
addSubWindow(new QLabel("Qt::Dialog"), Qt::Dialog);

おそらく最良のオプションだと思いQt::Tool|Qt::CustomizeWindowHintます(ボタンはありませんが、移動可能でサイズ変更可能です-サイズ変更可能にしたくない場合は、固定サイズを指定してください(setFixedSize())。

編集:また試してください:Qt::CustomizeWindowHint|Qt::WindowTitleHint

于 2013-07-04T05:08:12.880 に答える