如何使用Qt Creator从主窗口的按钮打开一个新窗口?

7

这似乎是一个简单的任务,但我一直没能想出如何完成它。我在Qt Creator中设计了两个窗口,其中一个窗口应该在主窗口中按下按钮时打开。以下是我尝试使用的代码:

void MainWindow::on_generateDomain_clicked()
{
    DomainGeneration dg;
    dg.show();
}

DomainGeneration是我的窗口类的名称。这里的头文件和源代码都没有从默认的Qt Creator生成的代码中进行修改。我做错了什么吗?我没有收到任何错误提示,只是当按钮被按下时窗口没有打开。


这个视频应该能回答你所有关于它的问题。 - user1581100
2个回答

11
{
    DomainGeneration dg; // <-- automatic object
    dg.show(); // equivalent to setVisible(true)
} // at this point dg is destroyed!
一种解决方法是将dg作为MainWindow类的(私有)数据成员。 QDialogopen()exec()函数,可以将对话框显示为模态对话框。也许您认为这是默认行为。但在您的情况下,dg会立即创建和销毁。

0
这更多是对Nick Dandoulakis的“谢谢”而不是一个答案。那真是太有帮助了。我是一个新手,我从来没有想过方法结束后对象会被销毁。
我在我的主窗口(window.h)的头文件中声明(或实例化...或两者都是?)我的about类,然后在window.cpp中的槽中添加了以下功能:
void Window::on_actionAbout_triggered()
{
    Window::about.show();
    Window::about.raise();
    Window::about.activateWindow();
}

我猜这个方法可行是因为about对象之前已经被实例化,所以不受方法或插槽作用域的限制,而这些很快就会终止。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接