这与以下问题相同: 如何更改 QTabWidget 中的文本对齐方式?
我试图将该 python 代码移植到 C++ 中,但它似乎不起作用。
这是头文件:
#include <QTabBar>
class HorizontalTabWidget : public QTabBar
{
Q_OBJECT
public:
explicit HorizontalTabWidget(QWidget *parent = 0);
protected:
void paintEvent(QPaintEvent *);
QSize sizeHint() const;
};
这是源文件:
void HorizontalTabWidget::paintEvent(QPaintEvent *)
{
for(int index = 0; index < count(); index++)
{
QPainter * painter = new QPainter(this);
painter->begin(this);
painter->setPen(Qt::blue);
painter->setFont(QFont("Arial", 10));
QRect tabrect = tabRect(index);
painter->drawText(tabrect, Qt::AlignVCenter | Qt::TextDontClip, tabText(index));
painter->end();
}
}
QSize HorizontalTabWidget::sizeHint() const
{
return QSize(130, 130);
}
我通过创建继承 QTabWidget 的 NewTabWidget 类来使用它。在 NewTabWidget 的构造函数中,我使用:
setTabBar(new HorizontalTabWidget);
这样做只是为了能够使用该 tabWidget,因为 setTabBar 受到保护。这是我得到的:
我错过了什么?
编辑:
我想要创建的是这个,但顶部有图标,图标下有标签(如在 Qt Creator 中):