gpt4 book ai didi

c++ - 如何找到事件的 QMainWindow 实例?

转载 作者:行者123 更新时间:2023-11-30 04:38:00 30 4
gpt4 key购买 nike

大家好

在我的 QT 应用程序中,我有几个 QMainWindow 实例。我在 Application Context 对象中跟踪打开的 QWindow 对象;

有一次,单击菜单项时,我想遍历所有 QWindows 并检查哪个窗口处于事件状态,执行一些操作。

请引用以下代码片段:

//Just a confirmation dialog
QMessageBox msgBox(this->getMainWindow());
msgBox.setText("This will discard existing project");
msgBox.setInformativeText("All Contour data and Volume data will be discarded");
msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
msgBox.setDefaultButton(QMessageBox::Ok);
if(msgBox.exec()==QMessageBox::Cancel)
{
return
}


//This is where I check the active window.

QList<MainWindow*> lst= applicationContext.getOpendedWindows();

for(i=0;i<lst.size();i++)
{
MainWindow *win=lst.value(i);

//Check if this is the active window
if(win.isActive()){ // tried (win==QApplication::activeWindow()) also
//DO SOMETHING with 'win' object
}
}
}

当我在检查前不显示确认对话框时,此检查工作正常。也就是说,当我注释掉“msgBox.exe()”行时,我可以从列表中找到一个事件窗口。

QMessageBox 的显示是否改变了焦点窗口?

有什么建议吗?

提前致谢

乌芒加

最佳答案

如果你有多个主窗口,我想你也有多个菜单?如果是这样,我会将对菜单操作使用react的插槽与主窗口相关联,使其成为主窗口的插槽或知道相应主窗口的对象的插槽。

您也可以像 Greg 建议的那样在消息框之前识别事件窗口,但我认为这也不是最佳选择。

关于c++ - 如何找到事件的 QMainWindow 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3447165/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com