我有一个简单的程序,我不记得如何在同一个程序中使用多个Ui表单类。我有MainWindow
类,它有一个按钮,可以打开Browser
类。这些类几乎是它们的默认值,这就是我用来打开Browser
类ui:
void MainWindow::on_pushButton_2_clicked()
{
this->hide();
Browser browser;
browser.show();
}
Browser
中的构造函数很简单ui->setupUi(this)
。
当Browser
窗口打开然后立即关闭时会发生什么。
答案 0 :(得分:2)
您可以在堆上创建浏览器,即:
Browser* browser=new Browser(this);
browser->show();
因为我认为它不是模态的。
答案 1 :(得分:1)
这是因为你在堆栈上分配浏览器对象,然后它会在函数结束时立即被销毁。
void MainWindow::on_pushButton_2_clicked()
{
hide();
Browser browser; // <--- constructed
browser.show();
} // <--- destructed
您有两种方法可以解决它:
将它作为一个堆对象,使用&#34;这个&#34;作为父母。这将确保对象在函数结束时不被销毁,但也不会泄漏,因为当父对象被销毁时,子对象也会被Qt父/子层次结构自动销毁。
void MainWindow::on_pushButton_2_clicked()
{
hide();
Browser *browser = new Browser(this);
browser->show();
}
将其作为班级成员。这将比函数的范围更长,所以没关系。
void MainWindow::on_pushButton_2_clicked()
{
hide();
m_browser.show();
}