嗨,我正在学习 QT,但遇到了一些我不明白的事情。为什么当我创建这样的小部件时
widget = new Widget(this);
widget->show();
不显示小部件,但如果我把“这个”留在外面,即
widget = new widget();
它显示?更重要的是,我需要能够从孩子那里调用父母的方法之一,除非我通过传递孩子的this
创建来设置孩子的患者,否则我无法做到这一点。
小部件确实出现了。但它显示为主窗口的一部分,而不是在它自己的窗口中。当然,如果您正在创建的小部件中没有任何内容,那么您将看不到太多内容。您可以使用以下方法进行测试:
widget = new QTextEdit(this);
widget->show();
如果你想让小部件总是显示在它自己的窗口中,那么你应该让你的小部件继承自 QDialog 而不是 QWidget。或者,如果您不想(或不能)这样做,那么您应该Qt::Window
在创建小部件时设置窗口标志:
widget = new Widget(this, Qt::Window);