これは、 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);
これは、setTabBarが保護されているため、そのtabWidgetを使用できるようにするためだけに行われます。これが私が得るものです:
私は何が欠けていますか?
編集:
私が作成したいのはこれですが、上部にアイコンがあり、アイコンの下にラベルがあります(Qt Creatorのように):