qt 給qtablewidget QTabBar设置滚动条 不是他自带的滚动按钮
时间: 2023-11-09 15:07:41 浏览: 176
如果你想在QTableWidget的QTabBar上启用自定义风格的滚动条,你可以使用QProxyStyle类实现。QProxyStyle是一个Qt的样式代理类,它可以用于修改现有的Qt样式。
示例代码如下:
```
class CustomProxyStyle : public QProxyStyle
{
public:
CustomProxyStyle(QStyle *baseStyle = nullptr) : QProxyStyle(baseStyle) {}
void drawPrimitive(QStyle::PrimitiveElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget = nullptr) const override
{
if (element == QStyle::PE_IndicatorTabTear && widget && qobject_cast<const QTabBar *>(widget)) {
// 绘制自定义滚动条
// ...
return;
}
QProxyStyle::drawPrimitive(element, option, painter, widget);
}
};
QTableWidget *tableWidget = new QTableWidget(this);
QTabBar *tabBar = tableWidget->findChild<QTabBar *>();
if (tabBar != nullptr) {
QTabWidget *tabWidget = qobject_cast<QTabWidget *>(tabBar->parent());
if (tabWidget != nullptr) {
tabWidget->setStyle(new CustomProxyStyle(tabWidget->style()));
}
}
```
这将在QTableWidget的QTabBar上启用自定义风格的滚动条。我们首先创建了一个CustomProxyStyle类,它继承自QProxyStyle,并重写了drawPrimitive()函数。我们在这个函数中检查是否绘制QStyle::PE_IndicatorTabTear元素,如果是,则绘制自定义滚动条。然后我们在主函数中创建了一个CustomProxyStyle对象,并设置给QTabWidget的样式。这将启用自定义风格的滚动条。你需要根据自己的需求实现自定义滚动条的绘制。
阅读全文