这似乎是一项简单的任务,但我一直无法弄清楚我将如何做。我在 Qt Creator 中设计了两个窗口,其中一个窗口是在我的主窗口中按下按钮时打开的。这是我试图用来打开它的代码:
void MainWindow::on_generateDomain_clicked()
{
DomainGeneration dg;
dg.show();
}
DomainGeneration是我的窗口类的名称。为我生成的默认 Qt Creator 的头文件和源代码没有改变。难道我做错了什么?我没有收到任何错误,按下按钮时窗口没有打开。
最佳答案
{
DomainGeneration dg; // <-- automatic object
dg.show(); // equivalent to setVisible(true)
} // at this point dg is destroyed!
一种解决方案是使
dg
成为 MainWindow
类的(私有(private))数据成员。QDialog
有 open()
和 exec()
方法,它们将对话框显示为模态对话框。可能您认为这是默认行为。但是,在您的情况下, dg
会立即创建和销毁。