好吧伙计们,我很抱歉,但我一直在查看有关QT的一些文档,但我仍然无法使其工作,我想要的是,我有和Mdi Area有一个按钮添加子窗口,它是一个电话簿,当我点击按钮添加一个子窗口它确实如此,但如果我点击它5次它将打开同一个窗口的5,我想打开它只有一个,无论你有多少点击它。
这是一张照片,当我点击红色圆圈的那个按钮时,它会在中间打开那个窗口。我已经尝试将它设置为活动窗口并使用了更多东西,但还没有任何工作,非常感谢任何帮助。
答案 0 :(得分:0)
这很简单。如果已经创建了另一个窗口,请不要创建它。
在头文件中:
QMdiSubWindow* subwindow;
在构造函数中:
subwindow = 0;
在按钮的onclick插槽中:
if (!subwindow) {
subwindow = ui->mdi_area->addSubWindow(widget);
}
subwindow->show();
subwindow->setFocus();
默认情况下,子窗口在关闭时不会被删除,因此您可以再次使用同一个对象。
答案 1 :(得分:0)
你可以在打开之前检查subWindowList:
bool is_open = false;
foreach(QMdiSubWindow *subw, ui->mdi_area->subWindowList())
if (qobject_cast<YouWindowClass>(subw) != nullptr) is_open = true;