一、基本組件
1. Designer設計師
為什么要上來先將這個東西呢,這個是QT外置的設計界面的工具,沒啥用,所以了解一下。我們用的多的是QT內置的界面設計,只需要我們雙擊我們創建的項目的.ui文件就可以進入這個界面,你對界面所有的修改都會被保存到你的.ui文件里,被寫成類似html語言的文件(是類似)。然后我們可以通過ui這個作用域去調用我們設計過的組件,也可以純代碼去創建組件。很明顯前者更方便。舉個例子,我們想創建一個按鈕,有兩種方式:
1.1 長按拖到界面內
(1) 可以拖動放置這個按鈕的位置
(2) 雙擊可以改變按鈕的文字
1.2 使用代碼創建
(1) 先得找到QPushButton類,使用類名去創建一個按鈕。
private:QPushButton *but1;
(2) 設置按鈕大小、位置和文字
// 移動按鈕到200,200的位置but1->move(200,200);// 設置按鈕的寬高but1->resize(100,50);// 設置按鈕的文字but1->setText("你好");
?所以Ui界面能實現的,代碼都能實現,只是更繁瑣,小白最好都練習一下,順便練習查找幫助文檔的能力。查找文檔的時候,當前類找不到的函數可以去父類查找。
1.3 界面文件與C++代碼的關系
2. 布局layout
可以把布局看做成一個透明的盒子,內部可以放置子組件,這些內部的子組件會按照布局預設的規則進行排序。
2.1 四種布局方式:
垂直布局:內部組件豎著排成一列。
水平布局:內部組件橫著排成一排。
格柵布局:內部組件排布成n*m的表格。
表單布局:用戶搭建用戶輸入的布局效果。
2.2 布局的使用
(1) 設置屬性。可以設置組件之間的間隔,組件與layout框的間隔(上下左右)等。補充:所有組件都可以在右下角屬性第一行更改組件名字。
(2) 選中布局后,點擊
可以打破布局。
布局可以貼合窗口,只需要選中窗口對象后,再次點擊
按鈕之一即可。
(3) 可以使用
伸展組件填充空白。
(4) 布局也是可以嵌套的,對于外層布局而言,內層布局相當于外層布局的一個子組件。
3.?QLabel標簽
顯示文本或圖像的簡單控件,支持富文本和超鏈接。常用于靜態內容展示或搭配其他控件作為說明標簽。但是需要注意的是:QLabel不能與用戶交互(不能點擊),只能展示使用,因此沒有合適的信號函數。
基本屬性:
4.?QAbstractButton按鈕類
QAbstractButton是按鈕類的抽象基類,因此內部包含類按鈕的基礎屬性和函數。
按鈕常用信號:
4.1?Check Box(復選框)
概念
- 允許用戶多選,每個Check?Box可以獨立選中或取消。
- 常用于“興趣愛好”、“協議同意”等場景。
常用信號/事件
- Qt:stateChanged(int)、toggled(bool)
4.2 Radio Button(單選按鈕)
概念
- 一組Radio Button中只能選中一個,常用于“性別選擇”、“支付方式”等場景。
- 組內互斥,選中一個會自動取消其他。
常用信號/事件
- Qt:toggled(bool)
4.3 Push Button(普通按鈕/按鍵)
概念
- 最常見的按鈕,點擊后立即觸發某個操作(如“提交”、“確定”、“關閉”)。
- 沒有選中/未選中狀態,只有“按下”動作。
常用信號/事件
- Qt:clicked()、pressed()、released();(分別為點擊,按壓和釋放的信號)
4.4 信號/事件總結表
控件類型 | Qt信號 | Web事件 | 典型用途 |
---|---|---|---|
Check?Box | stateChanged, toggled | change | 多選 |
Radio?Button | toggled | change | 單選(組內互斥) |
Push?Button | clicked, pressed | click | 操作觸發 |
4.5 練習:
實現點擊radio button觸發槽函數,使用toggled信號函數。
dialog.h:
#ifndef DIALOG_H
#define DIALOG_H#include <QDialog>
#include <QDebug>namespace Ui {
class Dialog;
}class Dialog : public QDialog
{Q_OBJECTpublic:explicit Dialog(QWidget *parent = 0);~Dialog();private:Ui::Dialog *ui;private slots:void toggledSlot(bool); //槽函數
};#endif // DIALOG_H
dialog.cpp:
#include "dialog.h"
#include "ui_dialog.h"Dialog::Dialog(QWidget *parent) :QDialog(parent),ui(new Ui::Dialog)
{ui->setupUi(this);//連接信號槽函數,選中按鍵就進入槽函數執行connect(ui->radioButton,SIGNAL(toggled(bool)),this,SLOT(toggledSlot(bool)));
}Dialog::~Dialog()
{delete ui;
}void Dialog::toggledSlot(bool checked)
{if(checked){qDebug() << "被選中";}else{qDebug() << "不選了";}
}
5. QLineEdit單行文本輸入框(掌握)
QLineEdit用于輸入一個單行文本,常用的屬性:
三、基本窗口類
基本界面類就以下三種,一般都是創建的時候把.h文件和.c文件一起創建的很少單獨取創建。
當我們創建一個項目的時候,會有下面三種選擇,但是當我們創建了項目想要實現多個串口跳轉的時候,會發現可以單獨創建.c或者.h文件,都是依情況而定。
1. QWidget
作為所有用戶界面對象的基類,
QWidget
?提供了窗口的基本屬性和行為。它可以包含子控件,處理用戶輸入事件(如鼠標、鍵盤),并管理布局。非窗口部件需要嵌入到父部件中顯示。QWidget的屬性在Designer中顯示為淡黃色。常用屬性如下:
策略:除非必要情況,或者實現特殊功能,否則我們的策略盡量不要修改,因為當前的策略對組件是最友好的。
2. QMainWindow
專為主窗口設計的類,提供了標準應用程序框架,包括菜單欄(
QMenuBar
)、工具欄(QToolBar
)、狀態欄(QStatusBar
)和中心部件區域。通過?setCentralWidget()
?可設置核心內容。屬性:
3. QDialog
用于創建模態或非模態對話框的基類。
QFileDialog
(文件選擇)、QMessageBox
(提示框)等是其常用子類。通過?exec()
?實現模態阻塞,show()
?實現非模態顯示。
沒有特殊的屬性。
4.單項目多窗口文件
在一個項目中創建多個窗口,右鍵項目點擊添加新文件,添加新文件選擇QT文件
三種窗口根據需要選擇,上面三個都是對話框類型,就是初始帶不帶按鈕,一般選第三個,什么也不帶。
后面就是改文件名下一步就行
三、總結:
這一部分主要是介紹,下一節將一些用法,最好保存一下隨時查看。