QT學習2-按鍵切換窗口
一、建立窗口
建立默認UI窗口mainwindow



建立登錄窗口



命名為 LoginDlg

當完成后會自動跳轉到設計模式,對新添加的對話框進行設計。我們向界面上拖入一個Push Button,然后更改顯示文本為“登錄到主界面”。
為了實現點擊這個按鈕后可以關閉該對話框并顯示主窗口,我們需要設置信號和槽的關聯。點擊設計模式上方的
圖標,或者按下F4,
便進入了信號和槽編輯模式。按著鼠標左鍵,從按鈕上拖向界面,如下圖所示。


這里簡單介紹一下信號和槽,大家可以把它們都看做是函數,比如這里,當單擊了按鈕以后就會發射單擊信號,即clicked();然后對話框接收到信號就會執行相應的操作,即執行accept()槽。一般情況下,我們只需要修改槽函數即可,不過,這里的accept()已經實現了默認的功能,它會將對話框關閉并返回Accepted,所以我們無需再做更改。下面我們就是要使用返回的Accepted來判斷是否按下了登錄按鈕。
完成后,可以按下
或者按下F3來返回控件編輯模式。
在這里,我們先添加了頭文件,創建了LoginDlg類的對象dlg,然后讓dlg運行,即執行exec()函數,并判斷對話框的返回值,(會在exec這條語句循環,直到消息信號過來)
如果是按下了登錄按鈕,那么返回值應該是Accepted,這時就關閉dlg,顯示主窗口mainwindow,并正常執行程序;如果沒有按下登錄按鈕,那么就循環直到關閉窗口結束程序。
現在大家可以運行程序,測試一下效果。
運行結果


接下來還有一種方法,建立新的窗口不會關閉舊有窗口
我們打開mainwindow.ui文件進入設計模式,然后在按鈕部件上單擊鼠標右鍵并選擇轉到槽菜單,如下圖所示。


在彈出的轉到槽對話框中選擇clicked()信號并按下確定按鈕。
這時會跳轉到編輯模式mainwindow.cpp文件的on_pushButton_clicked()函數處,這個就是自動生成的槽,它已經在mainwindow.h文件中進行了聲明。
我們只需要添加窗體頭文件和更改函數體即可。這里更改為:

運行結果

這個程序里我們實現了兩類窗口打開的方式,一個是自身消失而后打開另一個窗口,一個是打開另一個窗口而自身不消失。可以看到他們實現的方法是不同的。

mainwindow

浙公網安備 33010602011771號