在QT C ++中,QMdiSubWindow打开多个窗口

时间:2013-06-14 05:09:37

标签: c++ qt

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

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

link to the picture on imgur

2 个答案:

答案 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;