在启动时将其作为父项传递时无法显示Widget

时间:2012-12-04 15:22:29

标签: c++ qt

我正在学习QT而且我遇到了一些我不理解的东西。为什么我这样创建一个小部件

widget = new Widget(this);

widget->show();不会显示小部件,但如果我将'this'留下,即

widget = new widget();

它显示?什么更多我需要能够从孩子那里调用一个父母的方法,除非我通过this创建孩子来设置孩子的病人,否则我无法做到这一点。

1 个答案:

答案 0 :(得分:0)

小部件确实显示出来。但它显示为主窗口的一部分,而不是在它自己的窗口中。当然,如果您创建的小部件中没有任何内容,那么您将看不到多少内容。您可以使用以下内容对此进行测试:

widget = new QTextEdit(this);
widget->show();

如果您想让窗口小部件始终显示在自己的窗口中,那么您应该让窗口小部件继承自QDialog而不是QWidget。或者,如果您不想(或不能)这样做,那么您应该在创建窗口小部件时设置Qt::Window窗口标志:

widget = new Widget(this, Qt::Window);
相关问题