目錄Qt 學習筆記全系列傳送門:
【本章】Qt 學習筆記 - 第一章 - 快速開始、信號與槽
Qt 學習筆記 - 第二章 - 添加圖片、布局、界面切換
- 1、Qt 工程創建
- 2、工程檔案(pro 檔案)
- 3、UI設計器
- 4、給控制元件改名
- 5、信號與槽的概念
- 6、信號與槽的關聯
1、Qt 工程創建
使用 Qt Creator 創建 Qt 工程,不能包含中文目錄
2、工程檔案(pro 檔案)
#-------------------------------------------------
#
# Project created by QtCreator 2023-03-03T23:38:59
#
#-------------------------------------------------
# 往Qt工程中加入了core gui模塊
QT += core gui
# 如果Qt版本大于4那么還需要增加widgets模塊
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
# 生成App的名稱為qtdemo1,編譯產物的型別是app
TARGET = qtdemo1
TEMPLATE = app
# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
# 定義一個宏
DEFINES += QT_DEPRECATED_WARNINGS
# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
# 指定工程中有哪些cpp
SOURCES += \
main.cpp \
widget.cpp
# 指定工程中有哪些頭檔案
HEADERS += \
widget.h
# 指定工程中有哪些設計檔案
FORMS += \
widget.ui
# 指定工程中有哪些資源檔案
RESOURCES += \
pic.qrc
3、UI設計器
-
圖示

-
案例:設計登錄界面
- 設定頁面大小
- 選擇界面,在屬性編輯器中展開 geometry ,設定
寬度 x 高度為800 x 600
- 選擇界面,在屬性編輯器中展開 geometry ,設定
- 在頁面上顯示
- 在組件的
Display Widgets部分包含Label組件(QLable),該組件可以用來放文本、圖片、Gif 等,將其拖動到設計界面中,雙擊修改文本內容即可 - 在
Label中輸入內容,可以使用屬性編輯器中的font調整字體,alignment調整對齊方式
- 在組件的
- 添加輸入框
- 輸入賬號和密碼的對話框應該使用
一行文本輸入框,即組件的Input Widgets中的Line Edit(QLineEdit) - 對于密碼,不能使用明文顯示,需要設定回顯模式,在屬性編輯器中修改
echoMode屬性的值為password
- 輸入賬號和密碼的對話框應該使用
- 添加按鈕
- 使用組件
Buttons中的Push Button(QPushButton)即可
- 使用組件
- 設定頁面大小
4、給控制元件改名
- 為了便于代碼操作控制元件,見名知意
- 在物件瀏覽器中雙擊修改
5、信號與槽的概念
-
信號:指控制元件發出的特定的值(或者理解為觸發了控制元件的事件)
-
例:按鈕信號
- 在 QtCreator 的幫助中可以查看相關檔案,此處查詢
QPushButton的信號 - 經查閱
QPushButton中沒有信號,可以找其父類QAbstractButton,有四個信號(Signals)
void clicked(bool checked = false) void pressed() void released() void toggled(bool checked) 3 signals inherited from QWidget 2 signals inherited from QObject - 在 QtCreator 的幫助中可以查看相關檔案,此處查詢
-
-
槽:指的是槽函式,可以把槽函式系結在某一個控制元件的某個信號上
6、信號與槽的關聯
-
方法一:自動關聯
-
在設計界面,右擊控制元件,轉到槽,選擇信號即可
-
自動生成的槽函式是標準命名格式:
void on_<物件名>_<信號名>(<信號引數>);
-
會在
widget.h和widget.cpp添加槽函式的定義和實作-
widget.h槽函式只能宣告在
private slots:或者public slots:下,標準的C++是沒有的// ... private slots: void on_registerBtn_clicked(); // ... -
widget.cpp// ... void Widget::on_registerBtn_clicked() { // Qt中沒有printf qDebug("test"); }
-
-
-
方法二:手動關聯
- 手動關聯不是手動實作自動關聯
- 使用
connect()函式來實作手動關聯- 僅用于槽函式名不規范的情況,如果槽函式采用了標準的命名規范:
void on_<物件名>_<信號名>(<信號引數>);
則不需要手動寫connect()進行關聯,Qt 會自動進行關聯,否則會執行兩次槽函式,
- 僅用于槽函式名不規范的情況,如果槽函式采用了標準的命名規范:
-
在
widget.cpp的Widget類中使用connect()函式connect()函式的理解方法:// 物件A發出信號B的時候,就觸發物件C的槽函式D connect(A, SIGNAL(B), C, SLOT(D));Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); connect(ui->loginBtn, SIGNAL(clicked()), this, SLOT(on_loginBtn_clicked())); } -
在
widget.h中宣告槽函式private slots: void on_loginBtn_clicked(); -
在
widget.cpp中實作槽函式void Widget::on_loginBtn_clicked() { qDebug("welcome!"); }
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/545842.html
標籤:其他
上一篇:day02-專案實作01
