0

好吧,伙计们,我很抱歉,但我一直在看一些关于 QT 的文档,但我仍然无法让它工作,我想要的是,我有一个 Mdi 区域,它有一个添加子窗口的按钮,它是一个电话簿,当我单击按钮添加一个子窗口时,它确实可以,但是如果我单击它 5 次,它将打开同一个窗口的 5 个,我想让它只打开一个,无论你点击它多少次。

这是一张图片,当我点击红色圈出的那个按钮时,它会在中间打开那个窗口。我尝试将其设置为活动窗口并使用更多的东西,但还没有任何效果,非常感谢任何帮助。

链接到 imgur 上的图片

4

2 回答 2

0

您可以在打开之前检查 subWindowList:

  bool is_open = false;
  foreach(QMdiSubWindow *subw, ui->mdi_area->subWindowList())
    if (qobject_cast<YouWindowClass>(subw) != nullptr) is_open = true;
于 2013-06-14T10:03:38.063 回答
0

这很简单。如果已经创建了另一个窗口,请不要创建它。

在头文件中:

QMdiSubWindow* subwindow;

在构造函数中:

subwindow = 0;

在按钮的 onclick 插槽中:

if (!subwindow) {
  subwindow = ui->mdi_area->addSubWindow(widget);
}
subwindow->show();
subwindow->setFocus();

默认情况下,子窗口在关闭时不会被删除,因此您可以再次使用相同的对象。

于 2013-06-14T06:08:16.773 回答