我有main.cpp
,MainWindow.h
和MainWindow.cpp
个文件。我在这个原始主窗口上有一个按钮。我想要的是当我点击按钮时,它应该带我到一个新的主窗口并删除原来的主窗口。
我也想遵循良好的编程习惯。所以我想知道是否应该创建SecondWindow.cpp/.h
这样的新源文件和头文件,或者在我MainWindow.cpp
SLOT
定义的on_button_clicked()
中完成所有这些?
答案 0 :(得分:1)
你需要:
一旦控件返回事件循环,就删除当前窗口。
void MainWindow::on_button_clicked() {
auto win = new MainWindow();
win->setAttribute( Qt::WA_DeleteOnClose );
win->show();
deleteLater();
}
确保在堆上创建窗口的初始实例:
int main(int argc, char** argv) {
QApplication app(argc, argv);
auto win = new MainWindow;
win->setAttribute( Qt::WA_DeleteOnClose );
win->show();
return app.exec();
}
答案 1 :(得分: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();
}
应该这样做。
感谢。