关闭并重新打开时,Qt非模式对话框完全为空/空白

时间:2018-09-21 12:30:36

标签: qt qdialog

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()上的小部件再也不会出现...

我在做什么错了?

0 个答案:

没有答案