在qt中,當我們使用tabwidget,有時會把tabposition屬性設定成東西朝向的。但這時,我們會發現tabbar中的文字朝向也變了,如下圖所示:
而我們總是希望文字是正對著我們的,而不是翻轉過後的樣子。
這裡,我們可以通過setstyle來設定widget的風格,而qtabbar是繼承自widget的也可以通過同樣的方式,設定風格。
setstyle函式的定義為void setstyle(qstyle *style),也就是說我們需要傳乙個qstyle型別的變數進去。
然後要說乙個繼承自qstyle的類:qproxystyle
qproxystyle
qproxystyle類是乙個簡便的類,它簡化了動態覆蓋的qstyle元素。
qproxystyle封裝了乙個qstyle(通常是預設的系統風格),用於動態覆蓋繪畫或其他特定風格的行為。
(以上為qt幫助中的說明)
接下來,我們需要寫乙個自定義的繼承自qproxystyle的類,然後作為引數傳到setstyle裡面。
在這個自定義類中,我們過載qproxystyle中的函式drawcontrol()
[override virtual]voidqproxystyle::drawcontrol(qstyle::controlelement
element, const qstyleoption *option, qpainter *painter, const qwidget *widget = nullptr) const
用提供的painter繪製給定的element,並使用選項指定的樣式選項。
widget引數是可選的,可以用作繪製控制項的幫助。 option引數是乙個指向qstyleoption物件的指標,可以使用qstyleoption_cast()函式將其轉換為正確的子類。
(以上為qt幫助中的說明)
也就是說我們可以在drawcontrol中進行內容的繪圖,可以改變tabbar的樣式
**如下(建乙個繼承於qproxystyle的類):
class customtabstyle:public qproxystyle
qsize sizefromcontents(contentstype type, const qstyleoption *option,
const qsize &size, const qwidget *widget) const //設定bar上面的內容大小
return s;
}void drawcontrol(controlelement element, const qstyleoption *option, qpainter *painter, const qwidget *widget) const
qtextoption option;
option.setalignment(qt::aligncenter); //使文字位置居中
if (tab->state & qstyle::state_selected)
else
painter->drawtext(allrect, tab->text, option);
return;}}
if (element == ce_tabbartab) }};
然後new乙個customtabstyle給相應的tabbar:
ui->tabwidget->tabbar()->setstyle(new customtabstyle);
效果圖:
Nuxt使用vant導航欄元件tabbar
按照我之前在vue cli配置方法 發現watch事件重新整理頁面沒有執行,而在vue cli卻執行 我也不想nuxt是什麼原因 機制導致的 直接換種思路 元件components tabbar.vue v model isact inactive color 666666 active color...
Android選項卡 TabWidget 例子
publicclassoneactivityextendsactivity 注意 tabhost tabwidget framelayout的id必須分別為 android id tabhost,android id tabs,android id tabcontent 另外還要注意一下androi...
示例11 TabWidget的應用(2)
3.6.7 示例11 tabwidget的應用 2 在主窗體mainwindow.cpp檔案中建構函式 建構函式 mainwindow mainwindow qwidget parent qmainwindow parent ui new ui mainwindow 在主窗體mainwindow.c...