Qt和非模式对话框在关闭并重新打开时显示空白,我遇到了问题。
我的应用程序有一个主窗口,该窗口带有(当前)单个按钮,该按钮打开(显示)另一个非模式对话框窗口。
第二个窗口(对话框)称为 s_main ,其ui的创建和设置如下(顺便说一句,MyApp实例是在程序开始时构造的,直到主窗口被删除时,它才会销毁)已关闭):
class MyApp : public QObject
{
Q_OBJECT
public:
MyApp();
void activate_app( void );
//----------------------
// screen MAIN
Ui_s_main_dlg *ui;
QDialog *s_main;
...etc.
}
MyApp::MyApp()
{
// App "screens"
//------------------------------
// screen MAIN
s_main = new QDialog;
ui = new Ui_s_main_dlg;
ui->setupUi( s_main );
//------------------------------
// screen GRAPH
...etc.
}
...然后,当单击主窗口上的上述按钮时,会调用函数activate_app(),以显示 s_main 对话框:
void MyApp::activate_app( void )
{
s_main->show();
s_main->raise();
}
s_main 是对话框:
namespace Ui {
class s_main_dlg: public Ui_s_main_dlg {};
} // namespace Ui
...,而 Ui_s_main_dlg 是自动生成的对话框ui:
QT_BEGIN_NAMESPACE
class Ui_s_main_dlg
{
public:
QGridLayout *gridLayout_2;
QGridLayout *gridLayout;
QFrame *frame_K3;
QHBoxLayout *horizontalLayout_4;
...etc.
}
现在,问题如下:根据设计,在启动应用程序时,仅显示主窗口。当用户单击按钮时,对话框s_main会以非模式显示。所有这一切都按预期的第一次运行,并且对话框中的内容也应按预期运行。
但是,当用户使用ESC或鼠标关闭s_main对话框,然后再次单击按钮(调用上面显示的activate_app())时,将显示对话框s_main,但这一次完全为空,没有窗口小部件,但带有“对话”窗口名称,帮助(?)和关闭(X)按钮的窗口标题行除外。
此空白对话框窗口可以调整大小,移动并再次关闭,但是尝试使用s_main-> show()再次显示它仅再次显示完全空白的Dialog。显示在第一个s_main-> show()上的小部件再也不会出现...
我在做什么错了?