Qt:如何在按钮上打开一个新的主窗口并删除原始主窗口?

问题描述 投票:0回答:2

我有文件main.cppMainWindow.hMainWindow.cpp。我在这个原始主窗口上有一个按钮。我想要的是当我点击按钮时,它应该带我到一个新的主窗口并删除原来的主窗口。

我也想遵循良好的编程习惯。所以我想知道是否应该创建像SecondWindow.cpp/.h这样的新源文件和头文件,或者所有这些都在MainWindow.cpp中完成,我在那里定义了SLOT on_button_clicked()

c++ qt
2个回答
1
投票

你需要:

  1. 实例化新窗口并显示它。
  2. 一旦控件返回事件循环,删除当前窗口。 void MainWindow::on_button_clicked() { auto win = new MainWindow(); win->setAttribute( Qt::WA_DeleteOnClose ); win->show(); deleteLater(); }
  3. 确保在堆上创建窗口的初始实例: int main(int argc, char** argv) { QApplication app(argc, argv); auto win = new MainWindow; win->setAttribute( Qt::WA_DeleteOnClose ); win->show(); return app.exec(); }

0
投票

Kuba Ober给出了答案。但是,无论您按下按钮多少次,您都可以始终只有2个主窗口。它在第二次运行后似乎崩溃了。我相信我的解决方案会更好,因为你可以打开尽可能多的主窗口。

在您的MainWindow标题:

private:
Ui::MainWindow *ui;
MainWindow *nWin; //Add This bit of code here

至于你的触发事件功能:

void MainWindow::on_actionNew_triggered()
{
   nWin = new MainWindow;
   nWin->show();

}

应该这样做。

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.