Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在QT C++;,QMB窗口打开多个窗口_C++_Qt - Fatal编程技术网

C++ 在QT C++;,QMB窗口打开多个窗口

C++ 在QT C++;,QMB窗口打开多个窗口,c++,qt,C++,Qt,伙计们,我很抱歉,但是我一直在看一些关于QT的文档,但是我仍然无法让它工作,我想要的是,我有一个Mdi区域,它有一个按钮来添加子窗口,这是一个电话簿,当我点击按钮添加子窗口时,它确实会这样做,但如果我点击它5次,它将打开5个相同的窗口,我想让它只打开一个,无论你点击多少次 这是一张图片,当我点击红色的按钮时,它会打开中间的那个窗口。我试着将它设置为活动窗口,并使用了一些其他的东西,但没有任何效果,非常感谢您的帮助 这很简单。如果已经创建了另一个窗口,则不要创建该窗口 在头文件中: QMdiSub

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

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


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

在头文件中:

QMdiSubWindow* subwindow;
在构造函数中:

subwindow = 0;
在按钮的onclick插槽中:

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

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

您可以在打开之前检查子窗口列表:

  bool is_open = false;
  foreach(QMdiSubWindow *subw, ui->mdi_area->subWindowList())
    if (qobject_cast<YouWindowClass>(subw) != nullptr) is_open = true;
bool is_open=false;
foreach(qmdusubwindow*subw,ui->mdi\u区域->子窗口列表())
如果(qobject_cast(subw)!=nullptr)为_open=true;