私はQT5でC++を使用してGUIアプリケーションを作成しています。私はすべてのウィンドウが正面にないと仮定して(つまり、別のアプリケーションにalt-tabしたか、すべて最小化している)、いくつかのウィンドウのいずれかにalt-tabすれば私のアプリのウィンドウは、すべての前面に来て、目に見える必要があります。どのように私はそれらのいずれかにalt - タブですべてのウィンドウを前面に強制することができますか?
答えて
キー用語は「一時的なウィンドウ」です。ダイアログボックスを、こうした:私はX Window SystemではウィキペディアTransient (computer programming)
に(私のために適切な)説明がこれを見つけたそれは、他のウィンドウに属しており、それよりも長持ちない可能性がある場合、ウィンドウが他のウィンドウのための一時的なものと言われています警告メッセージとして一般的な例です。
IMHO、これはX11に限定されません。
Qtでは、親が別のウィンドウに設定されていると、ダイアログが一時的になります。
Iは、少量のサンプルを作った:
#include <QtWidgets>
int main(int argc, char **argv)
{
qDebug() << "Qt Version: " << QT_VERSION_STR;
// main application
QApplication app(argc, argv);
// setup GUI
QWidget qWin;
QVBoxLayout qVBoxWin;
QLabel qLblWin(QString::fromUtf8("Main Window (QWidget)"));
qVBoxWin.addWidget(&qLblWin, 1);
qWin.setLayout(&qVBoxWin);
qWin.show();
#define MAKE_DIALOG(I) \
QDialog qDlg##I; \
qDlg##I.setWindowTitle(QString::fromUtf8("Dialog"#I)); \
QVBoxLayout qVBoxDlg##I; \
QLabel qLblDlg##I(QString::fromUtf8("Dialog"#I" (QDialog)")); \
qVBoxDlg##I.addWidget(&qLblDlg##I, 1); \
qDlg##I.setLayout(&qVBoxDlg##I)
// dialog 1 without parent
MAKE_DIALOG(1);
// dialog 2 with parent
MAKE_DIALOG(2);
qDlg2.setParent(&qWin, Qt::Dialog);
#undef MAKE_DIALOG
qWin.show();
qDlg1.show();
qDlg2.show();
// run-time loop
return app.exec();
}
VS2013およびWindows 10上のQt 5.9.2(64ビット)でコンパイルして試験:
アプリケーションがメインで構成されウィンドウ(qWin
)と2つのダイアログウィンドウ(qDlg1
とqDlg2
)があります。
(親ウィジェットを持っていないqDlg1
)ダイアログ1は、Windows 10タスクバーの(メインウィンドウの横に)個別のエントリとして表示されます。ダイアログ2(qDlg2
)は一時的なもので、表示されません。
ダイアログ1は、タスクの選択(Altキー + タブ)で別々に選択することができます。メインウィンドウを選択すると、メインウィンドウとダイアログ2が一番上に表示されます。これにより、ダイアログ2は常にメインウィンドウの上に表示されます。
注:
私はqDlg2.setParent(&qWin, Qt::Dialog);
で2回目引数Qt::Dialog
が必要であるかどうかわかりませんでした。それはそうです。 (私がそれをやめたとき、ダイアログ2はまったく見えなくなりました)
の作品私は、ありがとう、たくさんの!答えだけでなく、その完全性 – Numi
- 1. どのように私は、フィルハンドルをドラッグするのいずれかでトリガーからハイパーリンクをエクセルカスタムを防ぐことができます - 私はそれがクリック
- 2. どのようにしてHTMLページのウィンドウ名を強制できますか?
- 3. 私はそれを落としたときに私のボーダーを黒に戻すにはどうすればできますか?それが画面を離れないようにするにはどうしたらいいですか?
- 4. _JAVA_OPTSが強制されていることを確認するにはどうすればよいですか?
- 5. どのようにそれらのいずれかのonchangeのすべての選択ボックスを管理することはできますか?
- 6. どのように並べ替えられていないリストとdivを並べて強制しますか?
- 7. SQL 2008 CAL - これらはどのように強制されますか?
- 8. タブのフォームからタブパネルの別のタブに制御を渡すにはどうすればよいですか?
- 9. どのように私はそれをコーディングすることができます
- 10. ウィンドウのサイズを変更すると、これらのttkアプリケーションのサイズを強制的に変更するにはどうすればよいですか?
- 11. これはそれが前にどのように見えるかですUIGraphicsGetImageFromCurrentImageContext
- 12. MAMP:どのように私はPHPのバージョンを強制することができますか?
- 13. Ext.namespaceとは何ですか?私たちはそれらをどのように使うべきですか?
- 14. スレッドを別のスレッドの前に強制的に開始するにはどうすればよいですか?
- 15. URLを新しいタブではなく既存のタブで開くようにブラウザに強制するにはどうすればよいですか?
- 16. このウィジェットの名前は何ですか?私はどのように私のアプリでそれを使うことができますか?
- 17. 私のgitサブモジュールの状態は何ですか?どのように私はそれをきれいにすることができますか?
- 18. どのように私はあなたがこのようにそれを行うことができます
- 19. どのように私はこれを解読することができるので、私はそれを
- 20. Xeroundですべての接続を強制終了するにはどうすればよいですか?
- 21. WPF(ポップアップ)ウィンドウが表示される前にサイズ変更するように強制するにはどうすればいいですか?
- 22. どのように私はそれらのidでjavascriptテンプレートを読み込むことができますか?
- 23. C++でコンパイルエラーをどのように強制できますか?
- 24. プログラムのすべてのプロセスを強制終了するにはどうすればよいですか?
- 25. はどのように私は下からダイアログを開くことができますが、それはアンドロイド
- 26. 私はテキストの結果を得ることができますどのように私はそれらを配列にプッシュすることができます
- 27. 画面の向きが変更されたが、ポートレートモードが強制的にマニフェストに強制されたときを知ることは可能ですか?
- 28. どのようにAeroがアクティブであるかのように境界線のないウィンドウを描画するように強制できますか?
- 29. アプリケーションのどこに行く前にユーザーのログインを強制することができますか?
- 30. 私のワードプレスの前面からjqueryを削除するにはどうすればよいですか?
あなたがそれを表現する方法は、システムがどのように動作し、ユーザーが期待しているかに直接関係しているようです。なぜあなたはこれをしたいのですか?おそらく、その問題を解決する良い方法があります。 – hvd
私のアプリには、FPGAが送信したパラメータを表示するためのメインウィンドウがあります(興味があれば、modbusを使ったシリアル通信より)。そして、ユーザが選択したものに基づいて、グラフなど私はそれらのすべてを同時に見ることができないようにしたいと考えています。私はすでにそれらを視覚的に重ならないように配置する方法を考え出しました。 – Numi
これは、[MDI](http://doc.qt.io/qt-5/qtwidgets-mainwindows-mdi-example.html)や[ドックウィジェット](http://doc.qt。io/qt-5/qtwidgets-mainwindows-dockwidgets-example.html)が適合し、問題を完全に回避するでしょう。 – hvd