【发布时间】:2014-12-23 03:20:46
【问题描述】:
我想从我的 MainWindow 打开一个小部件。我认为这很容易做到,我阅读的所有教程都是这样的:
void MainWindow::on_pushButton_Types_clicked()
{
m_typesWin = new TypesWindow(m_db, this);
m_typesWin->show();
this->hide();
}
但是,这仅适用于我不将“this”传递给构造函数的情况。当我将“this”添加到构造函数时,我看不到小部件,程序就停止了。如果我不隐藏“this”,那么我可以看到我的小部件的某些部分实际上在我的主窗口中。我不知道为什么。
编辑:这些类是由 QtCreator 自动创建的,所以它们应该没问题。
【问题讨论】:
-
对不起。
m_db是什么?顺便说一句,如果您没有看到您的小部件,请尝试在显示后添加m_typesWin->raise();和m_typesWin->activateWindow();。 -
您不应该将父窗口传递给顶级窗口。顶级窗口是没有父级的小部件。 (如果你想让 TypesWindow 成为顶级窗口,它不应该有另一个窗口作为父窗口)
-
@Lahiru Chandima:究竟什么是“顶级窗口”?
-
@Tay2510:m_db 是我在小部件中需要的对象。没什么重要的(我猜)。我尝试了 raise() 和 activateWindow() 但这没有帮助。小部件仍然消失,程序关闭。
-
在 TypesWindow 构造函数中,只需不要将主窗口指针传递给 TypesWindow 的父类。将其存储在 TypesWindow 本身的指针中。