我使用以下选项卡样式来水平绘制选项卡栏文本的东侧选项卡位置。只要我没有为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);
}
};发布于 2015-04-25 05:10:49
你为什么不使用Qt样式表呢?在设计器中,你可以动态地检查它,并且你不需要为此编写任何代码。
https://stackoverflow.com/questions/29835759
复制相似问题