105.08.24 Qt - 關閉其它視窗時顯示主視窗

好像超過一個月沒寫文了@@
來割個草 (汗顏
最近進入開發狂熱期OuO,小忙
作品都在我的 GitHub,不過目前主要是測試
我的 Instagram 應該可能大概會有一些開發日常
主題:
從主視窗開啟其它視窗時,若將主視窗 hide 掉
要從其它視窗離開時,就找不到可以 show 主視窗的方法
突然想到,如果把物件當參數傳過去應該可....
算了,先記錄查到的方法
然後,有點點小複雜喔....

其實也還好,東西加一加就可以動了


1,主視窗 (以下簡稱"主 ui ") 的 class 記得 include 其它視窗 (以下簡稱"副 ui ") 的 .h檔
      也就是在主 ui.h 檔加入
#include "subwindow.h"//請依照自己的檔案作設定

2,在主 ui.h 檔加入
public:
    void gotoSubWindow();//這個可自訂,也可以是按按鈕或其它

private slots:
    void close_child();

private:
    bool m_show_child;

3,在主 ui.cpp 檔加入
void MainWindow::close_child()//MainWindow 就是主視窗的 class
{
    m_show_child = false;
}

void MainWindow::gotoSubWindow()
{
    SubWindow subWindow;//SubWindow 就是副視窗的 class
    this->hide();
    QObject::connect(&subWindow,SIGNAL(close_me()),this,SLOT(close_child()));
    m_show_child = true;
    while (m_show_child)
    {
        subWindow.exec();
    }
    this->show();
}

4,在副 ui.h 檔加入
protected:
    void closeEvent(QCloseEvent *);

signals:
    void close_me();

private slots:
    void close_child();

private:
    bool m_show_child;

5,在副 ui.cpp 檔加入
void SubWindow::close_child()
{
    m_show_child = false;
}

void SubWindow::closeEvent(QCloseEvent *)
{
    emit close_me();
}

這樣就大致上完成了
只要在主 ui 呼叫 gotoSubWindow() 就會出現 副 ui
而關閉副 ui 時主 ui 就會自動出現

完整範例在這裡:aben20807/Qt_projects/006_qt_mainRecoverFromSubWindow_test/src/

以上,可能有錯,歡迎提出,感激不盡@@

參考資料:
Exercise: Qt hide and show #3

沒有留言:

張貼留言

^ Top