Qt反转标签QTabWidget?

问题描述 投票:1回答:1

我想要反转Qt Designer中的选项卡。

那是我想要改变QTabWidget标准的标签:

/ - TAB1 - \ / - TAB2 - \ ________________

\ - TAB1 - / \ - TAB2 - / ************************

该选项卡进入内容的位置,而不是内容。

我有一个简单的方法吗?也许是设置Qtabwidget或某种方式编辑CSS来实现这一目标?

谢谢

c++ qt qt4 qtabwidget qtabbar
1个回答
1
投票

这个任务不可能用qss做,你要做的就是创建自己的QTabBar并覆盖paintEvent()方法,另一个问题是setTabBar方法是私有的,所以你必须创建一个继承自QTabWidget的类,如果你想在Qt Designer中使用该类,你必须推广它:

#ifndef TABWIDGET_H
#define TABWIDGET_H

#include <QStyleOptionTab>
#include <QStylePainter>
#include <QTabWidget>

class TabBar: public QTabBar
{
protected:
    void paintEvent(QPaintEvent */*event*/){

        QStylePainter painter(this);
        QStyleOptionTab opt;

        for(int i = 0;i < count();i++)
        {   
            initStyleOption(&opt,i);

            QPoint c = tabRect(i).center();
            painter.translate(c);
            painter.rotate(-180);
            painter.translate(-c);
            painter.drawControl(QStyle::CE_TabBarTabShape, opt);
            painter.resetTransform();

            painter.drawControl(QStyle::CE_TabBarTabLabel,opt);
        }
    }
};

class TabWidget : public QTabWidget
{
public:
    TabWidget(QWidget *parent=0):QTabWidget(parent){
        setTabBar(new TabBar);
        setTabShape(QTabWidget::Triangular);
    }
};

#endif // TABWIDGET_H

完整的示例可以在以下link中找到。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.