我将我的问题解决了所需的问题,所以不要介意这没有用,如此处所示。
我的MainWindow
是QMainWindow
,里面有QPushButton
,我将该按钮的clicked()
信号连接到{{1}的下一个广告位}}:
QMainWindow
void MainWindow::followingSlot()
{
OpenFileDialog(this);
}
是一个免费功能:
OpenFileDialog
一切正常,直到我有2个或更多void OpenFileDialog(QWidget * inParent)
{
QFileDialog dialog(inParent, "caption");
dialog.setFileMode(QFileDialog::ExistingFiles);
dialog.setWindowModality(Qt::WindowModal);
dialog.exec();
}
个玩法。然后,在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();
}
回到正面,但你可以看到窗口短暂切换位置。
我发现Google,QtCentre或SO没有类似的问题。有没有办法阻止这种行为并将焦点放在有焦点的MainWindow
上?
我在Mac上使用Qt 4.8。
修改
我发现当前的MainWindow
不会被推回,而是堆栈中第二个的MainWindow
被拉到前面。如果我从左侧堆栈开始,我将以正确的堆栈结束(顶部位于前面,底部位于后面):
MainWindow
答案 0 :(得分:0)
您是否尝试将模态设置为Qt :: ApplicationModal。这样,FileDialog对整个应用程序是模态的,而不仅仅是父窗口。