QTabBar怎么自定义画标签样式
时间: 2024-03-28 20:41:29 浏览: 22
您可以使用`QTabBar`的`paintEvent()`方法来自定义标签的绘制。以下是一个示例代码:
```cpp
#include <QApplication>
#include <QTabBar>
#include <QStylePainter>
#include <QStyleOptionTab>
#include <QRect>
class CustomTabBar : public QTabBar {
public:
explicit CustomTabBar(QWidget *parent = nullptr) : QTabBar(parent) {}
protected:
void paintEvent(QPaintEvent *event) override {
QStylePainter painter(this);
QStyleOptionTab opt;
for (int i = 0; i < count(); i++) {
initStyleOption(&opt, i);
painter.drawControl(QStyle::CE_TabBarTabShape, opt);
QRect rect = tabRect(i);
QString text = tabText(i);
painter.drawText(rect, Qt::AlignCenter, text);
}
}
};
int main(int argc, char *argv[]) {
QApplication app(argc, argv);
CustomTabBar tabBar;
tabBar.addTab("Tab 1");
tabBar.addTab("Tab 2");
tabBar.addTab("Tab 3");
tabBar.show();
return app.exec();
}
```
在上面的代码中,我们创建了一个`CustomTabBar`类,继承自`QTabBar`。我们重写了`paintEvent()`方法,在其中自定义了标签的绘制。在循环中,我们使用`initStyleOption()`方法初始化了`QStyleOptionTab`对象,并使用`drawControl()`方法绘制了标签的形状。然后,我们获取标签的矩形区域并获取标签的文本,使用`drawText()`方法将文本绘制在标签中央。
最后,我们创建了一个`CustomTabBar`对象,并使用`addTab()`方法添加了三个标签。然后,我们显示了`CustomTabBar`对象。请注意,标签的形状和文本的绘制都可以根据您的需要进行自定义。