1) 主窗口的子窗口:給當前項目添加一個C++類(QWidget為基類)。把這個類的頭文件include進主窗口,然后在主窗口的私有變量里這樣寫:SubWidget subW;
想要通過主窗口的按鈕打開子窗口的時候,把按鈕的點擊動作和主窗口的成員函數connect起來,這個成員函數執行的就是subW->show()。(當然也可以hide主窗口)。
2) 當想要點擊子窗口的按鈕來顯示主窗口:
用到自定義信號。
在SubWidget類內自定義信號,前面要加signal關鍵字聲明。加了signal關鍵字,編譯器就知道這是信號,就無需實現了。
signal:
void sigSub();
/*
1.可以有參數
2.可以重載
3.返回值為void
4.發送信號:emit + 信號名
*/
sigSub這個信號屬於SubWidget,因此子窗口能夠把這個信號發出去。
在子窗口的構造函數這樣寫:connect(b1, &QPushButton::clicked, this, &SubWidget::myslot);
而:
void SubWidget::myslot()
{
//發送信號
emit sigSub();
}
表示發送信號。
在主窗口的構造函數里這么寫:connect(&sb, &SubWidget::sigSub, this, &Widget::slotShowMe); 信號的發出者是子窗口, 信號為sigSub,接收者為主窗口,槽函數是主窗口的成員函數,內部可以自定義(比如show主窗口,hide子窗口)。