QT的UI入門

二、UI入門

  1. QWidget類(熟悉)

QWidget類是所有組件和窗口的基類,內部包含了一些基礎的界面特性。

常用屬性:

  1. 修改坐標
  • x?:?const?int

橫坐標,每個圖形的左上角為定位點,橫軸的零點在屏幕的最左邊,正方向向右。

  • y?:?const?int

縱坐標,每個圖形的左上角為定位點,?縱軸的零點在屏幕的最上邊。正方向向下。

雖然橫坐標與縱坐標無法直接修改,但是可以通過函數間接進行修改。

// 參數1新的橫坐標
//?參數2:新的縱坐標
void	move(int?x,?int?y)

  1. 修改寬高
  • width?:?const?int

寬度,不包含邊框

  • height?:?const?int

高度,不包含邊框

//?參數1:新的寬度
//?參數2:新的高度
void	resize(int?w,?int?h)

可以通過下面函數,直接設置上述四個屬性。

//?參數是x、y,w、h寬高
void	setGeometry(int?x,?int?y,?int?w,?int?h)

dialog.cpp

#include?"dialog.h"//?構造函數定義
Dialog::Dialog(QWidget?*parent)
????:?QDialog(parent)?//?透傳構造。parent:參數
{
????qDebug()?<<?"構造函數"?<<?"helloworld";
????//?移動w?到200、200的位置
????move(200,200);
????//?設置w的寬高
????resize(200,600);}//?析構函數
Dialog::~Dialog()
{}

  1. 修改樣式
  • styleSheet?:?QString

樣式表,QString為Qt的字符串類型,樣式表使用QSS語法(模仿前端CSS語法)。

#include?"dialog.h"//?構造函數定義
Dialog::Dialog(QWidget?*parent)
????:?QDialog(parent)?//?透傳構造。parent:參數
{
????qDebug()?<<?"構造函數"?<<?"helloworld";
????//?移動w?到200、200的位置
????move(200,200);
????//?設置w的寬高
????resize(200,600);????//?設置樣式表(設置背景顏色)
????setStyleSheet("background-color:red");
}//?析構函數
Dialog::~Dialog()
{}

2、添加子組件(掌握)

上面的窗口中什么都沒有,實際上可以向窗口周昂添加若干組件,實現不同的顯示和交互效果,本節以QPushButton(按壓式按鈕)組件為例子。

QPushButton要持續存在,直到窗口關閉,因此使用堆內存

//?參數1:按鈕上顯示的文字
//?參數2:現階段可以認為是給當前組件設置父窗口。
?QPushButton(const?QString?&?text,?QWidget?*?parent?=?0)

#include?"dialog.h"//?構造函數定義
Dialog::Dialog(QWidget?*parent)
????:?QDialog(parent)?//?透傳構造。parent:參數
{
????qDebug()?<<?"構造函數"?<<?"helloworld";
????//?移動w?到200、200的位置
????move(200,200);
????//?設置w的寬高
????resize(200,600);????//?設置樣式表(設置背景顏色)
//????setStyleSheet("background-color:red");
????//?創建一個按鈕對象
????//?參數1:按鈕顯示的文字
????//?參數2:在當前對象窗口中創建一個按鈕,this指向當前對象(w)
????btn?=?new?QPushButton("你好",this);
????btn->move(50,200);
}//?析構函數
Dialog::~Dialog()
{
????delete?btn;
}

以下是一個預設好的QPushButton的樣式表,可以根據需求自行更改。

#define?QPushButton_STYTLE?(QString("\
/*按鈕普通態*/\
QPushButton\
{\
????font-family:Microsoft?Yahei;\
????/*字體大小為20點*/\
????font-size:20pt;\
????/*字體顏色為白色*/\
????color:white;\
????/*背景顏色*/\
????background-color:rgb(14?,?150?,?254);\
????/*邊框圓角半徑為8像素*/\
????border-radius:8px;\
}\
/*按鈕懸停態*/\
QPushButton:hover\
{\
????/*背景顏色*/\
????background-color:rgb(100?,?137?,?255);\
}\
/*按鈕按下態*/\
QPushButton:pressed\
{\
????/*背景顏色*/\
????background-color:rgb(14?,?135?,?10);\
????/*左內邊距為3像素,讓按下時字向右移動3像素*/\
????padding-left:3px;\
????/*上內邊距為3像素,讓按下時字向下移動3像素*/\
????padding-top:3px;\
}"))

推薦兩個配色網站

在線顏色選擇器 | RGB顏色查詢對照表

Color Palette Generator - Create Beautiful Color Schemes

dialog.h

#ifndef?DIALOG_H
#define?DIALOG_H//?添加頭文件QDialog對話框基類。Qt自帶類型通常使用Q開頭
#include?<QDialog>
#include?<QDebug>
#include?<QPushButton>#define?QPushButton_STYTLE?(QString("\
/*按鈕普通態*/\
QPushButton\
{\
????font-family:Microsoft?Yahei;\
????/*字體大小為20點*/\
????font-size:20pt;\
????/*字體顏色為白色*/\
????color:white;\
????/*背景顏色*/\
????background-color:rgb(14?,?150?,?254);\
????/*邊框圓角半徑為8像素*/\
????border-radius:8px;\
}\
/*按鈕懸停態*/\
QPushButton:hover\
{\
????/*背景顏色*/\
????background-color:rgb(100?,?137?,?255);\
}\
/*按鈕按下態*/\
QPushButton:pressed\
{\
????/*背景顏色*/\
????background-color:rgb(14?,?135?,?10);\
????/*左內邊距為3像素,讓按下時字向右移動3像素*/\
????padding-left:3px;\
????/*上內邊距為3像素,讓按下時字向下移動3像素*/\
????padding-top:3px;\
}"))//?繼承QDialog(對話框基類)
class?Dialog?:?public?QDialog
{
????//?先放著
????Q_OBJECTpublic:
????Dialog(QWidget?*parent?=?0);?//?構造函數
????~Dialog();??//?析構函數
private:
????QPushButton?*btn;
};#endif?//?DIALOG_H

dialog.cpp

#include?"dialog.h"//?構造函數定義
Dialog::Dialog(QWidget?*parent)
????:?QDialog(parent)?//?透傳構造。parent:參數
{
????qDebug()?<<?"構造函數"?<<?"helloworld";
????//?移動w?到200、200的位置
????move(200,200);
????//?設置w的寬高
????resize(200,600);????//?設置樣式表(設置背景顏色)
//????setStyleSheet("background-color:red");
????//?創建一個按鈕對象
????//?參數1:按鈕顯示的文字
????//?參數2:在當前對象窗口中創建一個按鈕,this指向當前對象(w)
????btn?=?new?QPushButton("你好",this);
????btn->move(50,200);
????//?設置樣式給按鈕對象
????btn->setStyleSheet(QPushButton_STYTLE);
}//?析構函數
Dialog::~Dialog()
{
????delete?btn;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/696162.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/696162.shtml
英文地址,請注明出處:http://en.pswp.cn/news/696162.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

js實現復制功能

一、具體場景 前端有時需要實現點擊按鈕復制的功能&#xff0c;這個時候就不能讓用戶去手動選擇內容右鍵復制了。 二、實現方式 1. document.execCommand &#xff08;1&#xff09;具體實現 復制時&#xff0c;先選中文本&#xff0c;然后調用document.execCommand(‘copy’)…

171基于matlab的隨機共振微弱信號檢測

基于matlab的隨機共振微弱信號檢測&#xff0c;隨機共振描述了過阻尼布朗粒子受周期性信號和隨機噪聲的共同作用下,在非線性雙穩態系統中所發生的躍遷現象. 隨機共振可用于弱信號的檢測。程序已調通&#xff0c;可直接運行。

共享之力:分布式計算的奇跡

在信息時代的浪潮中&#xff0c;分布式計算作為一種革命性的技術&#xff0c;已經深刻地改變了我們對計算和數據處理的理解方式。其發展歷程既是一段精彩的科技史&#xff0c;也是一段充滿探索與突破的冒險故事&#xff0c;從最初的概念探索到如今的普及應用&#xff0c;分布式…

HashMap 源碼學習-jdk1.8

1、一些常量的定義 這里針對MIN_TREEIFY_CAPACITY 這個值進行解釋一下。 java8里面&#xff0c;HashMap 的數據結構是數組 &#xff08;鏈表或者紅黑樹&#xff09;&#xff0c;每個數組節點下可能會存在鏈表和紅黑樹之間的轉換&#xff0c;當同一個索引下面的節點超過8個時…

【Webpack】處理字體圖標和音視頻資源

處理字體圖標資源 1. 下載字體圖標文件 打開阿里巴巴矢量圖標庫open in new window選擇想要的圖標添加到購物車&#xff0c;統一下載到本地 2. 添加字體圖標資源 src/fonts/iconfont.ttf src/fonts/iconfont.woff src/fonts/iconfont.woff2 src/css/iconfont.css 注意字體…

[計算機網絡]---TCP協議

前言 作者&#xff1a;小蝸牛向前沖 名言&#xff1a;我可以接受失敗&#xff0c;但我不能接受放棄 如果覺的博主的文章還不錯的話&#xff0c;還請點贊&#xff0c;收藏&#xff0c;關注&#x1f440;支持博主。如果發現有問題的地方歡迎?大家在評論區指正 目錄 一 、TCP協…

Java并發基礎:原子類之AtomicBoolean全面解析

本文概要 AtomicBoolean類優點在于能夠確保布爾值在多線程環境下的原子性操作&#xff0c;避免了繁瑣的同步措施&#xff0c;它提供了高效的非阻塞算法實現&#xff0c;可以大大提成程序的并發性能&#xff0c;AtomicBoolean的API設計非常簡單易用。 AtomicBoolean核心概念 …

P1024 [NOIP2001 提高組] 一元三次方程求解

P1024 [NOIP2001 提高組] 一元三次方程求解 純代碼記錄 #include <iostream> #include <math.h> using namespace std; double a,b,c,d; double res[3];//用于存放三個解 int resCount;inline double F(double x)//三次函數 {return a*pow(x,3)b*pow(x,2)c*xd; }//…

web前端開發this指向問題

? 函數內部中的 this 指向誰&#xff0c;不是在函數定義時決定的&#xff0c;而是在函數第一次調用并執行的時候決定的 1. call 方法 語法&#xff1a;函數名.call(調用者, 參數1, …) 作用&#xff1a;函數被借用時&#xff0c;會立即執行&#xff0c;并且函數體內的this會…

Facebook Horizon:探索虛擬現實中的社交空間

隨著科技的不斷進步&#xff0c;虛擬現實&#xff08;VR&#xff09;技術正成為社交互動和娛樂體驗的新前沿。在這個數字時代&#xff0c;Facebook作為全球最大的社交媒體平臺之一&#xff0c;正在引領虛擬社交的新時代&#xff0c;其推出的虛擬社交平臺Facebook Horizon成為了…

Tomcat線程池原理(下篇:工作原理)

文章目錄 前言正文一、執行線程的基本流程1.1 JUC中的線程池執行線程1.2 Tomcat 中線程池執行線程 二、被改造的阻塞隊列2.1 TaskQueue的 offer(...)2.2 TaskQueue的 force(...) 三、總結 前言 Tomcat 線程池&#xff0c;是依據 JUC 中的線程池 ThreadPoolExecutor 重新自定義…

深入理解C語言(5):程序環境和預處理詳解

文章主題&#xff1a;程序環境和預處理詳解&#x1f30f;所屬專欄&#xff1a;深入理解C語言&#x1f4d4;作者簡介&#xff1a;更新有關深入理解C語言知識的博主一枚&#xff0c;記錄分享自己對C語言的深入解讀。&#x1f606;個人主頁&#xff1a;[?]的個人主頁&#x1f3c4…

Imagewheel私人圖床搭建結合內網穿透實現無公網IP遠程訪問教程

文章目錄 1.前言2. Imagewheel網站搭建2.1. Imagewheel下載和安裝2.2. Imagewheel網頁測試2.3.cpolar的安裝和注冊 3.本地網頁發布3.1.Cpolar臨時數據隧道3.2.Cpolar穩定隧道&#xff08;云端設置&#xff09;3.3.Cpolar穩定隧道&#xff08;本地設置&#xff09; 4.公網訪問測…

flutter 文件上傳組件和大文件分片上傳

文件分片上傳 資料 https://www.cnblogs.com/caijinglong/p/11558389.html 使用分段上傳來上傳和復制對象 - Amazon Simple Storage Service 因為公司使用的是亞馬遜的s3桶 下面是查閱資料獲得的 亞馬遜s3桶的文件上傳分片 分段上分為三個步驟&#xff1a;開始上傳、上傳對…

CSP-J 2023 T3 一元二次方程

文章目錄 題目題目背景題目描述輸入格式輸出格式樣例 #1樣例輸入 #1樣例輸出 #1 提示 題目傳送門題解思路總代碼 提交結果尾聲 題目 題目背景 眾所周知&#xff0c;對一元二次方程 a x 2 b x c 0 , ( a ≠ 0 ) ax ^ 2 bx c 0, (a \neq 0) ax2bxc0,(a0)&#xff0c;可…

STM32G030C8T6:定時器1ms中斷(以64MHz外部晶振為例)

本專欄記錄STM32開發各個功能的詳細過程&#xff0c;方便自己后續查看&#xff0c;當然也供正在入門STM32單片機的兄弟們參考&#xff1b; 本小節的目標是&#xff0c;系統主頻64 MHZ,采用高速外部晶振&#xff0c;通過定時器3 每秒中斷控制 PB9 引腳輸出高低電平&#xff0c;從…

20240222作業

完善對話框&#xff0c;點擊登錄對話框&#xff0c;如果賬號和密碼匹配&#xff0c;則彈出信息對話框&#xff0c;給出提示“登錄成功"&#xff0c;提供一個Ok按鈕&#xff0c;用戶點擊OK后&#xff0c;關閉登錄界面&#xff0c;跳轉到其他界面 如果賬號和密碼不匹配&…

Java基礎-注解

注解 注解是用來干什么的它有什么作用注解的常見分類內置注解Override注解定義 Deprecated注解定義 SuppressWarnings注解定義 元注解Target注解定義ElementType Retention&&RetentionTarget注解定義RetentionPolicy Documented注解定義 Inherited注解定義用法 Repeata…

低代碼開發:推動互聯網企業數字化轉型的關鍵因素

聯網行業作為我國數字經濟發展的核心驅動力&#xff0c;在推動國家數字化轉型中扮演著至關重要的角色。與其他傳統行業相比&#xff0c;互聯網企業面臨更加緊迫的數字化轉型需求&#xff0c;因為它們需要不斷適應快速變化的市場環境和技術趨勢。 然而&#xff0c;由于互聯網企業…

深入理解APDU協議與Java開發

1. 什么是APDU&#xff1f; APDU&#xff0c;即應用協議數據單元&#xff08;Application Protocol Data Unit&#xff09;&#xff0c;是一種在智能卡與卡片讀卡器之間進行通信的協議。APDU定義了在交互中傳輸的數據格式和規則&#xff0c;允許讀卡器發送指令并接收響應。 2…