重慶網(wǎng)站建設(shè)公司有哪些內(nèi)容搜索引擎推廣渠道
目錄
關(guān)于QWidget
作為界面組件時(shí),你需要有印象的
1. 控制屬性
2. 組件狀態(tài)與交互屬性
3. 外觀和樣式屬性
4. 布局與子組件管理屬性
5. 圖標(biāo)和光標(biāo)屬性
6. 大小策略屬性
作為單獨(dú)的窗體的屬性
寫Qt快兩年了,也寫過一些規(guī)模偏大的軟件,但是依舊覺得對(duì)QWidget的類比較陌生,這里整理一下筆者看到的一些筆記。供以參考翻閱!
關(guān)于QWidget
關(guān)于QWidget,他是大部分Ui控件的爹。幾乎所有的常用控件都是直接或者是間接的繼承了QWidget。也就是說,它實(shí)際上定義了控件的最基礎(chǔ)屬性。我們很多時(shí)候聊Ui布局感官可能就需要從這里開始順藤摸瓜。
作為界面組件時(shí),你需要有印象的
屬性很多,我委托GPT幫助我整理了一下,下面是我審核后認(rèn)為無誤的部分:
1. 控制屬性
這里則是說Widget大小屬性的部分,其實(shí)跟下面的外觀分不開來,更多的是說Widget自身的屬性。比如說窗體自身的大小策略
屬性名稱 | 類型 | 功能說明 | 使用示例 | 注意事項(xiàng) |
---|---|---|---|---|
windowTitle | QString | 設(shè)置或獲取窗口的標(biāo)題。 | setWindowTitle("My Application"); | 窗口標(biāo)題通常在窗口的標(biāo)題欄中顯示。 |
geometry | QRect | 設(shè)置或獲取窗口的位置和大小。 | setGeometry(100, 100, 800, 600); | 參數(shù)依次為窗口的x坐標(biāo)、y坐標(biāo)、寬度和高度。 |
size | QSize | 設(shè)置或獲取窗口的大小。 | resize(800, 600); | 僅修改窗口的大小,不改變位置。 |
minimumSize | QSize | 設(shè)置窗口的最小大小。 | setMinimumSize(400, 300); | 當(dāng)用戶調(diào)整窗口時(shí),不能小于該大小。 |
maximumSize | QSize | 設(shè)置窗口的最大大小。 | setMaximumSize(1200, 800); | 當(dāng)用戶調(diào)整窗口時(shí),不能大于該大小。 |
isVisible | bool | 獲取窗口是否可見。 | bool visible = isVisible(); | 該屬性通常在運(yùn)行時(shí)動(dòng)態(tài)變化。 |
2. 組件狀態(tài)與交互屬性
屬性名稱 | 類型 | 功能說明 | 使用示例 | 注意事項(xiàng) |
---|---|---|---|---|
enabled | bool | 設(shè)置或獲取組件是否啟用。 | setEnabled(false); | 禁用后組件無法接收用戶輸入。(只能看不能用) |
focusPolicy | Qt::FocusPolicy | 設(shè)置焦點(diǎn)策略,決定該組件如何獲得焦點(diǎn)。 | setFocusPolicy(Qt::StrongFocus); | 可選值包括:Qt::NoFocus , Qt::TabFocus 等。 |
toolTip | QString | 設(shè)置或獲取組件的工具提示。 | setToolTip("This is a button."); | 鼠標(biāo)懸停時(shí)顯示,通常用于提供附加信息。 |
statusTip | QString | 設(shè)置或獲取組件的狀態(tài)提示。 | setStatusTip("Click to perform action."); | 通常在狀態(tài)欄顯示,提供操作的簡(jiǎn)短描述。 |
whatsThis | QString | 設(shè)置“這是什么”提示。 | setWhatsThis("This button starts the application."); | 提供更詳細(xì)的說明,可以通過幫助系統(tǒng)訪問。 |
mouseTracking | bool | 設(shè)置或獲取組件是否跟蹤鼠標(biāo)移動(dòng)。 | setMouseTracking(true); | 啟用后,可以在mouseMoveEvent 中處理鼠標(biāo)移動(dòng)。 |
acceptDrops | bool | 設(shè)置組件是否接受拖放操作。 | setAcceptDrops(true); | 需要重載dragEnterEvent 和dropEvent 。 |
tabletTracking | bool | 設(shè)置或獲取組件是否跟蹤平板輸入。 | setTabletTracking(true); | 啟用后,可以在tabletEvent 中處理平板輸入。 |
3. 外觀和樣式屬性
屬性名稱 | 類型 | 功能說明 | 使用示例 | 注意事項(xiàng) |
---|---|---|---|---|
styleSheet | QString | 設(shè)置組件的樣式表,定義組件的外觀。 | setStyleSheet("background-color: yellow;"); | 使用CSS樣式表語(yǔ)法,可用于復(fù)雜的樣式設(shè)置。 |
autoFillBackground | bool | 設(shè)置是否自動(dòng)填充背景。 | setAutoFillBackground(true); | 使背景顏色填充組件的整個(gè)區(qū)域。 |
palette | QPalette | 獲取或設(shè)置組件的調(diào)色板,控制顏色和樣式。 | QPalette palette; palette.setColor(QPalette::Window, Qt::blue); setPalette(palette); | 顏色可針對(duì)不同狀態(tài)(如禁用、懸停等)設(shè)置。 |
font | QFont | 設(shè)置或獲取組件的字體。 | setFont(QFont("Arial", 12)); | 字體設(shè)置會(huì)影響文本的顯示效果。 |
4. 布局與子組件管理屬性
屬性名稱 | 類型 | 功能說明 | 使用示例 | 注意事項(xiàng) |
---|---|---|---|---|
layout | QLayout* | 設(shè)置或獲取組件的布局管理器。 | QVBoxLayout *layout = new QVBoxLayout(this); setLayout(layout); | 只能有一個(gè)布局管理器,設(shè)置后會(huì)刪除之前的布局。 |
parent | QWidget* | 設(shè)置或獲取組件的父對(duì)象。 | QWidget *child = new QWidget(this); | 父對(duì)象負(fù)責(zé)管理子對(duì)象的生命周期。 |
children | QList<QWidget*> | 獲取組件的子對(duì)象列表。 | QList<QWidget*> children = this->findChildren<QWidget*>(); | 可以使用模板過濾特定類型的子對(duì)象。 |
5. 圖標(biāo)和光標(biāo)屬性
這是用在widget顯示icon的
屬性名稱 | 類型 | 功能說明 | 使用示例 | 注意事項(xiàng) |
---|---|---|---|---|
iconSize | QSize | 設(shè)置圖標(biāo)的顯示大小(在某些組件中有效)。 | setIconSize(QSize(32, 32)); | 適用于如QToolButton等需要圖標(biāo)的組件。 |
cursor | QCursor | 設(shè)置或獲取鼠標(biāo)光標(biāo)。 | setCursor(Qt::PointingHandCursor); | 可以使用Qt預(yù)定義的光標(biāo)類型,或自定義光標(biāo)。 |
6. 大小策略屬性
控制了控件的大小對(duì)于外部布局時(shí)的行為。比如說Agressive的占據(jù)盡可能大的空間或者選擇保守的策略。
屬性名稱 | 類型 | 功能說明 | 使用示例 | 注意事項(xiàng) |
---|---|---|---|---|
sizePolicy | QSizePolicy | 設(shè)置組件的大小策略,決定如何調(diào)整大小。 | setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); | 影響組件在布局中的表現(xiàn)和調(diào)整。 |
很多都很好理解,但是這個(gè)sizePolicy可能會(huì)在后面的布局的時(shí)候會(huì)用到,這里說一下:
sizeType屬性說明 | 值 | 說明 |
---|---|---|
Fixed | 0 | 固定值策略: Qwidget.sizeHint()對(duì)應(yīng)的缺省大小就是部件的固定不變大小,因此部件不能放大也不能縮小。 |
Minimum | GrowFlag | 指定最小值策略: Qwidget. sizeHint()對(duì)應(yīng)的缺省大小是最小值,不能調(diào)整部件大小到比缺省大小更小的尺寸,并且該值應(yīng)該足夠滿足部件的展現(xiàn)。部件允許擴(kuò)展,但是Qt并不建議擴(kuò)展(例如:水平方向上的按鈕)。 |
Maximum | ShrinkFlag | 指定最大值策略: Qwidget. sizeHint()對(duì)應(yīng)的缺省大小是最大值,假如其它部件需要空間并且不會(huì)破壞該部件,那么該部件允許被縮小(例如:-個(gè)分割線)。 |
Perferred | GrowFlag|ShrinkFlag | 首選項(xiàng)策略: Qwidget sizeHint()對(duì)應(yīng)的缺省大小是最佳效果,部件允許放大或縮小,但不建議擴(kuò)展比sizeHint()大,該策略是缺省策略。 |
Expanding | GrowFlag|ShrinkFlag|ExpandFlag | 擴(kuò)展策略: Qwidget. sizeHint()對(duì)應(yīng)的缺省大小是合理的大小,但部件允許縮小并且可用。部件可以利用額外的空間,因此它將會(huì)得到盡可能多的空間(例如:水平方向上的滑塊)。 |
MinimumExpanding | GrowFlag|ExpandFlag | 最小可擴(kuò)展策略: Qwidget. sizeHint()對(duì)應(yīng)的缺省大小是最小值,并且大小足夠。部件允許使用額外空間,因此它將會(huì)得到盡可能多的空間(例如:水平方向上的滑塊)。 |
Ignored | ShrinkFlag|GrowFlag|IgnoreFlag | Qwidget.sizeHint()對(duì)應(yīng)的缺省大小將會(huì)被忽略,部件將會(huì)獲取盡可能多的空間。 |
感謝qt 如何設(shè)計(jì)好布局和漂亮的界面。_qt 界面-CSDN博客的大佬,這里引用一下:
-
Fixed:控件不能放大或者縮小,控件的大小就是它的sizeHint。
-
Minimum:控件的sizeHint為控件的最小尺寸??丶荒苄∮谶@個(gè)sizeHint,但是可以放大。
-
Maximum:控件的sizeHint為控件的最大尺寸,控件不能放大,但是可以縮小到它的最小的允許尺寸。
-
Preferred:控件的sizeHint是它的sizeHint,但是可以放大或者縮小。
-
Expanding:控件可以自行增大或者縮小。(原文這里的Expanding打錯(cuò)了,打成了Expandint)
-
MinimumExpanding:控件的sizeHint是它的sizeHint,但是可以使用額外的空間,也就是它會(huì)盡可能得到更多的空間。
-
Ignored:控件的sizeHint不起作用,它會(huì)盡可能得到更多的空間。
這里就把常見的必備屬性說完了,下面聊一聊當(dāng)QWidget是一個(gè)單獨(dú)的窗體的時(shí)候的行為。
作為單獨(dú)的窗體的屬性
屬性名稱 | 類型 | 功能說明 |
---|---|---|
windowTitle | QString | 設(shè)置或獲取窗口的標(biāo)題。 |
windowIcon | QIcon | 設(shè)置或獲取窗口的圖標(biāo)。 |
windowOpacity | qreal | 設(shè)置窗口的不透明度,值范圍為0.0(完全透明)到1.0(完全不透明)。 |
windowFilePath | QString | 獲取或設(shè)置窗口相關(guān)的文件路徑(在某些應(yīng)用程序中使用)。當(dāng)然Windows Meaningful Only |
windowModified | bool | 設(shè)置或獲取窗口是否被修改過,通常用于指示文件是否已更改。 |
windowModality | Qt::WindowModality | 設(shè)置窗口的模態(tài)性,決定是否阻塞其他窗口的輸入。 |
windowState | Qt::WindowState | 設(shè)置或獲取窗口的狀態(tài)(如最小化、最大化)。 |
windowFlags | Qt::WindowFlags | 設(shè)置窗口的標(biāo)志,決定窗口的行為和外觀。 |