这似乎是一项简单的任务,但我无法弄清楚我将如何做到这一点。我在Qt Creator中设计了两个窗口,其中一个窗口是在我的主窗口中按下按钮时打开的。这是我试图用来打开它的代码:
void MainWindow::on_generateDomain_clicked()
{
DomainGeneration dg;
dg.show();
}
DomainGeneration是我窗口类的名称。此标题和源代码未从为我生成的默认Qt Creator中更改。难道我做错了什么?我没有收到任何错误,按下按钮时窗口没有打开。
答案 0 :(得分:11)
{
DomainGeneration dg; // <-- automatic object
dg.show(); // equivalent to setVisible(true)
} // at this point dg is destroyed!
一种解决方案是使dg
成为MainWindow
类的(私有)数据成员。
QDialog
有open()
和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 对象以前是实例化的,因此不限于方法或插槽的范围,它会很快终止。