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

时间:2011-06-13 21:23:52

标签: c++ qt

这似乎是一项简单的任务,但我无法弄清楚我将如何做到这一点。我在Qt Creator中设计了两个窗口,其中一个窗口是在我的主窗口中按下按钮时打开的。这是我试图用来打开它的代码:

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

DomainGeneration是我窗口类的名称。此标题和源代码未从为我生成的默认Qt Creator中更改。难道我做错了什么?我没有收到任何错误,按下按钮时窗口没有打开。

2 个答案:

答案 0 :(得分:11)

{
    DomainGeneration dg; // <-- automatic object
    dg.show(); // equivalent to setVisible(true)
} // at this point dg is destroyed!

一种解决方案是使dg成为MainWindow类的(私有)数据成员。

QDialogopen()exec()方法,将对话框显示为模式对话框。可能你认为这是默认行为。但在你的情况下,dg会立即被创建和销毁。

答案 1 :(得分:0)

对于Nick Dandoulakis来说,这更像是一个“谢谢”,而不是答案。那太有用了。我就是这样一个菜鸟,在方法结束后,我从未想过会破坏对象。

我在主窗口(window.h)的头文件中声明(或实例化......或两者?)我的 about 类,然后将以下功能添加到窗口中的插槽中。 CPP:

void Window::on_actionAbout_triggered()
{
    Window::about.show();
    Window::about.raise();
    Window::about.activateWindow();
}

我想这是有效的,因为 about 对象以前是实例化的,因此不限于方法或插槽的范围,它会很快终止。