2015-04-23 122 views
2

我正在使用以下標籤樣式水平繪製標籤欄文本 東標籤位置。只要我不爲 QTabBar ::選項卡設置任何保證金,文本就會畫好。在這種情況下,文本方向仍然是垂直的,偏移量很奇怪qt自定義qstyle qtabbar

class TabStyle : public QProxyStyle { 
public: 
    explicit TabStyle(Qt::Orientation orientation, QStyle *baseStyle = 0) 
     : QProxyStyle(baseStyle), mOrientation(orientation) {} 
    void drawControl(ControlElement element, const QStyleOption *option, 
        QPainter *painter, const QWidget *widget) const { 
    if (element == CE_TabBarTabLabel) { 
     if (const QStyleOptionTab *tab = 
       qstyleoption_cast<const QStyleOptionTab *>(option)) { 
     QStyleOptionTab opt(*tab); 
     opt.shape = QTabBar::RoundedNorth; 
     return QProxyStyle::drawControl(element, &opt, painter, widget); 
     } 
    } 
    QProxyStyle::drawControl(element, option, painter, widget); 
    } 

private: 
    const Qt::Orientation mOrientation; 
}; 

class TabWidget : public QTabWidget { 
public: 
    explicit TabWidget(QWidget *parent = 0, 
        Qt::Orientation orientation = Qt::Horizontal) 
     : QTabWidget(parent) { 
    QTabBar *tabBar = new QTabBar; 
    tabBar->setStyle(new TabStyle(orientation)); 
    setTabBar(tabBar); 
    } 
}; 
+0

也許你可以添加圖片它應該看起來以及它看起來如何。 剛剛在黑暗中拍攝 - 怎麼樣使用setBaseStyle - 也許它會填補一些缺失的空白 – nayana

回答

0

爲什麼你不Qt樣式表?在設計師中,您可以即時檢查它,而不需要爲此編寫任何代碼。

+2

我沒有找到任何選項來設置文本方向當tabbar位於tabwidget的右側時,爲水平狀態。可能嗎? –