概述
QTabBar
類(lèi)提供了一個(gè)選項(xiàng)卡欄,例如用于選項(xiàng)卡對(duì)話(huà)框。
QTabBar非常簡(jiǎn)單易用,它使用預(yù)定義的形狀繪制選項(xiàng)卡,并在選擇選項(xiàng)卡時(shí)發(fā)出信號(hào)。它可以被子類(lèi)化以調(diào)整外觀和感覺(jué)。Qt還提供了一個(gè)實(shí)現(xiàn)好的QTabWidget。
每個(gè)選項(xiàng)卡具有一個(gè)tabText()方法、一個(gè)可選的tabIcon()方法、一個(gè)可選的tabToolTip()方法、一個(gè)可選的tabWhatsThis()方法和一個(gè)可選的tabData()方法。可以使用setTabText()、setTabIcon()、setTabToolTip()、setTabWhatsThis()和setTabData()方法更改選項(xiàng)卡的屬性。可以使用setTabEnabled()方法單獨(dú)啟用或禁用每個(gè)選項(xiàng)卡。
每個(gè)選項(xiàng)卡可以顯示不同顏色的文本。可以使用tabTextColor()函數(shù)找到選項(xiàng)卡的當(dāng)前文本顏色,并使用setTabTextColor()函數(shù)設(shè)置特定選項(xiàng)卡的文本顏色。
可以使用addTab()方法添加選項(xiàng)卡,或使用insertTab()方法在特定位置插入選項(xiàng)卡。選項(xiàng)卡的總數(shù)由count()方法給出??梢允褂胷emoveTab()方法從選項(xiàng)卡欄中刪除選項(xiàng)卡。結(jié)合removeTab()和insertTab()方法,可以將選項(xiàng)卡移動(dòng)到不同的位置。
shape屬性定義了選項(xiàng)卡的外觀。選擇形狀是一種個(gè)人喜好,盡管選項(xiàng)卡對(duì)話(huà)框(用于首選項(xiàng)等)通常使用RoundedNorth。對(duì)話(huà)框以外的窗口中的選項(xiàng)卡控件幾乎始終使用RoundedSouth或TriangularSouth。許多表格和其他選項(xiàng)卡控件,在這些控件中所有頁(yè)面都基本相似,使用TriangularSouth,而當(dāng)頁(yè)面不同時(shí)(例如多頁(yè)工具面板)使用RoundedSouth。QTabBar的默認(rèn)形狀是RoundedNorth。
QTabBar API中最重要的部分是currentChanged()信號(hào)。每當(dāng)當(dāng)前選項(xiàng)卡發(fā)生變化時(shí)(甚至在啟動(dòng)時(shí),當(dāng)前選項(xiàng)卡從“無(wú)”更改時(shí)),都會(huì)發(fā)出此信號(hào)。還有一個(gè)槽函數(shù)setCurrentIndex(),可用于以編程方式選擇選項(xiàng)卡。currentIndex()函數(shù)返回當(dāng)前選項(xiàng)卡的索引,count()函數(shù)返回選項(xiàng)卡的數(shù)量。
QTabBar類(lèi)在類(lèi)似QAbstractButton的方式下創(chuàng)建自動(dòng)助記鍵;例如,如果一個(gè)選項(xiàng)卡的標(biāo)簽是“&Graphics”,那么Alt+G將成為切換到該選項(xiàng)卡的快捷鍵。
以下虛函數(shù)可能需要重新實(shí)現(xiàn),以調(diào)整外觀和感覺(jué)或在每個(gè)選項(xiàng)卡中存儲(chǔ)額外數(shù)據(jù):tabSizeHint()
計(jì)算選項(xiàng)卡的大小。tabInserted()
通知有一個(gè)新的選項(xiàng)卡被添加。tabRemoved()
通知有一個(gè)選項(xiàng)卡被刪除。tabLayoutChange()
通知選項(xiàng)卡已重新布局。paintEvent()
繪制所有選項(xiàng)卡。
對(duì)于子類(lèi),可能還需要tabRect()
函數(shù),它返回單個(gè)選項(xiàng)卡的可視幾何形狀。
常用函數(shù)
枚舉
- Shape
: 用于定義選項(xiàng)卡的外觀形狀,包括RoundedNorth
、RoundedSouth
、TriangularNorth
和TriangularSouth
等選項(xiàng)。
成員函數(shù)
-
addTab()
: 添加一個(gè)新的選項(xiàng)卡,并返回該選項(xiàng)卡的索引。 -
insertTab()
: 在指定位置插入一個(gè)新的選卡,并返回該選項(xiàng)卡的索引。 -
removeTab()
: 移除指定索引位置的選項(xiàng)卡。 -
setTabText()
: 設(shè)置指定索引位置的選項(xiàng)卡的文本。 -
setTabIcon()
: 設(shè)置指定索引位置的選項(xiàng)卡的圖標(biāo)。 -
setCurrentIndex()
: 設(shè)置當(dāng)前選中的選項(xiàng)卡的索引。 -
count()
: 返回選項(xiàng)卡欄中選項(xiàng)卡的數(shù)量。
信號(hào)
-
currentChanged(int index)
: 當(dāng)當(dāng)前選項(xiàng)卡發(fā)生變化時(shí)發(fā)出的信號(hào),傳遞當(dāng)前選項(xiàng)卡的索引。
槽
-
tabChanged(int index)
: 自定義槽函數(shù),用于響應(yīng)選項(xiàng)卡改變的事件。
此外還有一些常用的成員函數(shù)包括:
-
setTabToolTip()
: 設(shè)置指定索引位置的選項(xiàng)卡的工具提示。 -
setTabWhatsThis()
: 設(shè)置指定索引位置的選項(xiàng)卡的WhatsThis幫助文本。 -
setTabEnabled()
: 啟用或禁用指定索引位置的選項(xiàng)卡。 -
tabText()
: 返回指定索引位置的選項(xiàng)卡的文本。 -
tabIcon()
: 返回指定索引位置的選項(xiàng)卡的圖標(biāo)。 -
tabToolTip()
: 返回指定索引位置的選項(xiàng)卡的工具提示。 -
tabWhatsThis()
: 返回指定索引位置的選項(xiàng)卡的WhatsThis幫助文本。
通過(guò)使用這些成員函數(shù)、信號(hào)和槽,可以實(shí)現(xiàn)對(duì)選項(xiàng)卡的添加、刪除、修改以及選中狀態(tài)的控制與響應(yīng)。
示例
以下示例,實(shí)現(xiàn)了使用QTabBar類(lèi)創(chuàng)建一個(gè)選項(xiàng)卡欄和處理選項(xiàng)卡的切換:
#include <QApplication>
#include <QTabBar>
#include <QMessageBox>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
// 創(chuàng)建一個(gè)主窗口
QWidget window;
window.setWindowTitle("Tab Bar Example");
// 創(chuàng)建一個(gè)選項(xiàng)卡欄
QTabBar tabBar(&window);
// 添加選項(xiàng)卡
tabBar.addTab("Tab 1");
tabBar.addTab("Tab 2");
tabBar.addTab("Tab 3");
// 設(shè)置當(dāng)前選中的選項(xiàng)卡
tabBar.setCurrentIndex(0);
// 連接信號(hào)currentChanged()到槽函數(shù),處理選項(xiàng)卡的切換
QObject::connect(&tabBar, &QTabBar::currentChanged, [&](int index) {
QMessageBox::information(&window, "Tab Changed", "Switched to Tab " + QString::number(index + 1));
});
// 設(shè)置選項(xiàng)卡欄的布局和大小
tabBar.setGeometry(20, 20, 200, 30);
// 顯示窗口
window.show();
return app.exec();
}
示例創(chuàng)建了一個(gè)主窗口,并在主窗口中添加了一個(gè)名為"Tab Bar Example"的標(biāo)題。然后,創(chuàng)建了一個(gè)QTabBar控件,并添加了三個(gè)選項(xiàng)卡。
通過(guò)設(shè)置setCurrentIndex()方法,將當(dāng)前選定的選項(xiàng)卡設(shè)置為第一個(gè)選項(xiàng)卡。
使用QObject::connect()來(lái)連接QTabBar的currentChanged()信號(hào)到一個(gè)lambda表達(dá)式,以處理選項(xiàng)卡的切換事件,并通過(guò)QMessageBox顯示切換的選項(xiàng)卡的信息。
最后,使用setGeometry()方法設(shè)置選項(xiàng)卡欄的布局和大小,并顯示主窗口。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-773056.html
效果:
運(yùn)行示例,創(chuàng)建一個(gè)帶有選項(xiàng)卡欄的窗口。當(dāng)切換選項(xiàng)卡時(shí),將會(huì)彈出一個(gè)消息框顯示當(dāng)前選中的選項(xiàng)卡的信息。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-773056.html
到了這里,關(guān)于【Qt控件之QTabBar】介紹及使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!