[英]Window modal QFileDialog pushing parent to background after exec()
我把我的問題解決了它的必要性,所以不要介意這沒有什么用處,如圖所示。
我的MainWindow
是一個QMainWindow
,里面有一個QPushButton
,我將該clicked()
信號連接到QMainWindow
的下一個插槽:
void MainWindow::followingSlot()
{
OpenFileDialog(this);
}
OpenFileDialog
是一個免費的功能:
void OpenFileDialog(QWidget * inParent)
{
QFileDialog dialog(inParent, "caption");
dialog.setFileMode(QFileDialog::ExistingFiles);
dialog.setWindowModality(Qt::WindowModal);
dialog.exec();
}
一切正常,直到我有2個或更多的MainWindow
在玩。 然后,在QFileDialog::exec()
調用結束時,當前的MainWindow
被推回到'焦點堆棧'中的一個位置,而第二個MainWindow
被激活並跳轉到前台。 我想要活躍且前面的窗戶保持活躍並且在前面。
我當然可以將OpenFileDialog
改為以下內容:
void OpenFileDialog(QWidget * inParent)
{
QFileDialog dialog(inParent, "caption");
dialog.setFileMode(QFileDialog::ExistingFiles);
dialog.setWindowModality(Qt::WindowModal);
dialog.exec();
inParent->raise();
inParent->activateWindow();
}
這使我的MainWindow
回到正面,但你可以看到窗口短暫地切換位置。
我發現谷歌,QtCentre或SO沒有類似的問題。 有沒有辦法阻止這種行為並將焦點集中在具有焦點的MainWindow
上?
我在Mac上使用Qt 4.8。
編輯:我發現它不是當前的MainWindow
被推回,它是堆棧中第二個的MainWindow
,它被拉到了前面。 如果我從左側堆棧開始,我將以正確的堆棧結束(頂部位於前面,底部位於后面):
current MainWindow other MainWindow raise() current MainWindow
other application -> current MainWindow ------> other MainWindow
other MainWindow other application other application
您是否嘗試將模態設置為Qt :: ApplicationModal。 這樣,FileDialog對整個應用程序是模態的,而不僅僅是父窗口。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.