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