关闭QMdiSubWindow时出现错误消息

时间:2017-04-28 22:57:13

标签: c++ qt runtime-error qt5

我创建了一个customer_<name3>.docx,可以创建一个或多个QMainWindow,以下方法负责创建子窗口:

QMdiSubWindow

正如您在代码中看到的那样,我创建了一个关闭其中一个的信号。

void PSubWindow::newFile(){
  static ushort newFileCounter = 1;
  this->mdiareaContainer = this->mainWindow->findChild<QMdiArea*>("mdiArea");
  QMdiSubWindow *window = new QMdiSubWindow();
  window->setAttribute(Qt::WA_DeleteOnClose, true);
  window->setWidget(new QPlainTextEdit);
  this->subWindow = mdiareaContainer->addSubWindow(window);
  QString FileTitle = "Untitled " + QString::number(newFileCounter++);
  this->subWindow->setWindowTitle(FileTitle);
  this->subWindow->show();
  this->mdiareaContainer->setViewMode(QMdiArea::TabbedView);
  this->mdiareaContainer->setTabsClosable(true);
  this->mdiareaContainer->setTabsMovable(true);
  this->tabs = mdiareaContainer->findChild<QTabBar*>();
  this->tabs->setExpanding(false);
  QObject::connect(this->tabs, SIGNAL(tabCloseRequested(int)), this, SLOT(on_subWindow_tabCloseRequested(int)), Qt::UniqueConnection);
}

在关闭最后一个窗口时,总是在运行时出现错误消息,消息显示:

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

检查index是否小于sub.size();列表将为空,因为最后一个窗口已关闭,但索引可能仍为0。

答案 1 :(得分:1)

删除选项卡后,窗口将被删除,因此列表中不再存在该位置。