文章目錄
- 思路
- 步驟
-
- 基本視窗
- 新視窗
- 新對話框
- 效果
- 代碼
思路
Qt中一個視窗實際上就是一個
QMainWindow
派生類,在
main()
函數中使用
QMainWindow.show()
将其顯示出來。是以,如果要實作多視窗,我們隻要多建立幾個Qt的
MainWindow
,然後再需要的地方顯示出來就好。同理還可以使用建立
QDialog
派生類的方式,顯示新的視窗(對話框)。
步驟
基本視窗
在VS中建立一個名為"multiwindow"的
Qt GUI Application
項目後,項目中會有如下幾個預設檔案:
1.
multiwindow.ui
(xxx.ui):這個檔案是打開Qt Designer的,用于可視化設計UI界面;
2.
ui_multiwindow.h
(ui_xxx.h):這個頭檔案是使用Qt Designer設計圖形界面後生成的代碼;
3.
multiwindow.h
(xxx.h):包含該Qt視窗類定義的頭檔案,包含槽函數定義等;
4.
multiwindow.cpp
(xxx.cpp):該Qt視窗的源檔案,包含各種具體實作等。
在
multiwindow.ui
中使用Qt Designer設計如下包含2個
pushButton
的界面:
新視窗
在
項目
中點選
添加新項
,如下圖,選擇Qt中的
Qt MainWindow Form File
,這是新增一個Qt視窗。
之後會在項目中添加一個新的
newWindow.ui
(xxx.ui)和
ui_newWindow.h
(ui_xxx.h)。
點開
newWindow.ui
,這就是新視窗的設計界面:
注意:在設計新視窗之前,我們最好把紅色框位置預設的視窗名稱
MainWindow
改了,這個是生成代碼後的類名稱。如果不改的話,在下一次建立視窗後,還是這個名稱,會發生重名問題。
剛才在添加新項之後,僅生成了
xxx.ui
檔案和其對應的
ui_xxx.h
頭檔案,還缺少該視窗類的頭檔案和源檔案,需要我們自己添加。
newWindow.h
頭檔案和
newWindow.cpp
源檔案的内容,我們可以參考預設視窗的頭檔案和源檔案。下面給出範例:
newWindow.h
#pragma once
#include <QtWidgets/QMainWindow>
#include "ui_newWindow.h"
class newWindow : public QMainWindow
{
Q_OBJECT
public:
newWindow(QWidget *parent = Q_NULLPTR);
private:
Ui::newWindow ui;
};
newWindow.cpp
#include "newWindow.h"
newWindow::newWindow(QWidget *parent)
: QMainWindow(parent)
{
ui.setupUi(this);
}
這個
newWindow
就是新視窗的類,之後我們隻需要在基本視窗中包含這個頭檔案,并且定義一個
newWindow
對象就可以使用這個新視窗了。
新對話框
新對話框的方式實際上和視窗類似,隻是在定義類的頭檔案時,繼承的應該是
QDialog
類。
在
項目
中點選
添加新項
,如下圖,選擇Qt中的
Qt Dialog Form File
,這是新增一個Qt視窗。圖中第一個和第二個的差別在于生成的對話框中“ok”和“cancel”按鈕的位置一個在下邊,一個在右邊。
同樣,我們需要在ui中修改名稱,并且為其添加頭檔案和源檔案。
在頭檔案中定義對話框類時,注意繼承的是
QDialog
類,下面給出範例:
newDialog.h
#pragma once
#include <QtWidgets>
#include "ui_newDialog.h"
class newDialog : public QDialog
{
Q_OBJECT
public:
newDialog();
private:
Ui::newDialog ui;
};
newDialog.cpp
#include "newDialog.h"
newDialog::newDialog()
{
ui.setupUi(this);
}
這個
newDIalog
就是新對話框的類,之後我們隻需要在基本視窗中包含這個頭檔案,并且定義一個
newDIalog
對象就可以使用這個新對話框了。
效果
代碼
由于檔案較多,直接打包給大家提供下載下傳連結。
https://download.csdn.net/download/qinchang1/10961920
(這個積分好像預設的,可能檔案比較大,是以要5積分,不是會員不建議下載下傳)
如有錯誤,歡迎指正!