我正在使用以下标签样式来水平绘制标签栏文本
东标签位置。只要我不设置任何空白,就可以绘制文本
QTabBar::tab。在这种情况下,文本方向保持垂直,并带有奇怪的偏移量。
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);
}
};
最佳答案
为什么不使用Qt样式表?在设计器中,您可以即时检查它,而无需为此编写任何代码。
关于c++ - qtqtabbar的qt自定义qstyle,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29835759/