在 QT C++ 中,QMdiSubWindow 会打开多个窗口
in QT C++, QMdiSubWindow opens multiple windows
好吧,伙计们,我很抱歉,但我一直在查看有关QT的一些文档,但我仍然无法使其工作,我想要的是,好吧,我有Mdi区域,它有一个按钮来添加子窗口,它是一个电话簿,当我单击按钮添加一个子窗口时,它确实可以,但是如果我单击它5次,它将打开同一窗口的5个和我想让它只打开一个,无论你点击多少。
这是一张图片,当我单击红色圈出的按钮时,它将打开中间的窗口。我尝试将其设置为活动窗口并使用更多内容,但尚未奏效,非常感谢任何帮助。
链接到Imgur上的图片
这很简单。如果已创建另一个窗口,请不要创建该窗口。
在头文件中:
QMdiSubWindow* subwindow;
在构造函数中:
subwindow = 0;
在按钮的点击插槽中:
if (!subwindow) {
subwindow = ui->mdi_area->addSubWindow(widget);
}
subwindow->show();
subwindow->setFocus();
默认情况下,子窗口在关闭时不会被删除,因此您可以再次使用相同的对象。
您可以在
打开之前检查subWindowList:
bool is_open = false;
foreach(QMdiSubWindow *subw, ui->mdi_area->subWindowList())
if (qobject_cast<YouWindowClass>(subw) != nullptr) is_open = true;
相关文章:
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 问:如何使用C++中的按钮从窗口打开窗口
- SDL 窗口不会弹出
- 在createdialog创建的窗口中捕获用于编辑控件的OnMouseMove消息
- 如何在cpp文件之间切换窗口?在Qt中
- QuadTree只在窗口的右上角绘制
- VS Code "command":"make"与终端窗口中的命令行"make"不同
- 如何在C++中找到active directory中禁用和锁定的窗口帐户
- 处理闪烁窗口事件
- 如何通过按下第三个窗口中的按钮,将QString从一个窗口获取到另一个窗口
- C++win32 API创建多个类似视口的窗口
- SFML RenderWindow打开窗口需要很长时间
- 如何将不同的可执行文件合并到一个窗口框架中进行编码?像浏览器一样
- 获取 SFML 窗口的 HWND 和高可用性?
- 如何获取 GLFW 窗口 ID?
- GLEW/GLUT:调用init并创建一个窗口后,取消初始化并重新初始化?
- 用于窗口的 HID 终端
- SFML 文本未绘制在窗口上
- 如何为窗口截屏
- 在 QT C++ 中,QMdiSubWindow 会打开多个窗口