从QMainWindow打开现有的QMainWindow

时间:2014-01-14 19:50:41

标签: qt qtgui qmainwindow qt-signals

我有一个小问题 - 我有QMainWindow按钮。单击该按钮,我想要打开现有的QMainWindow(详细信息:我想打开一个带有QWT Plot的窗口。我的意思是QWt的刷新项目示例。)

所以我想在按钮上打开现有的Window。到目前为止,我能够打开新的QMainWindow,但是如何从项目更新中看到MainWindow呢?

void  MyWindow::on_pushButton_1_clicked ()
{
  QMainWindow *mw = new QMainWindow();
  mw->show();
}

1 个答案:

答案 0 :(得分:1)

使用此代码,您将在离开方法范围后获得泄漏指针。

原因是show()方法没有阻塞。它会将事件发布到事件循环队列中。每当Qt事件循环“获得容量”时,它将以异步方式处理。

您有几种方法可以解决此问题。

1)Qt父/子关系

QMainWindow *mw = new QMainWindow(this);
                                  ^^^^

2)让“mw”成为MyWindow的一名成员

m_mw.show();

并在MyWindow构造函数中构造它。

3)使用智能指针

QSharedPointer<QMainWindow> mw = QSharedPointer<QMainWindow>(new QMainWindow());