QT实现QTableWidget中滚动条的逐行移动,隐藏滚动条,点击按钮一次移动一行(QAbstractItemView::ScrollPerItem)

在触摸屏上使用QTableWidget,用滚动条来控制非常不方便,将右侧滚动条隐藏,改为通过按钮点击来进行逐行滚动,或者滚动到最前/最后。逐行滚动主要通过QTableWidget自带的setCurrentIndex函数来实现。

    如上图,这是一个45*8的表,右侧滚动条已改为按钮。逐行滚动实现的逻辑是,初始默认表格能展现的最下面一行为初始行,上图中表格能展示17行,则初始行号为16,点击向下滚动,则setCurrentIndex(m_nItemIndex++);点击向上滚动,则setCurrentIndex(m_nItemIndex--)。下面贴出滚动部分代码实现。

    m_nRowCount = 45;
    m_nColumnCount = 8;

    m_nItemIndex = 17 - 1;

    m_pTable = new QTableWidget(this);
    m_pTable->setFont(font);
    m_pTable->setRowCount(m_nRowCount); //设置行数
    m_pTable->setColumnCount(m_nColumnCount); //设置列数
    m_pTable->setVe

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你想在QTableWidgetQTabBar上启用自定义风格的滚动条,你可以使用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())); } } ``` 这将在QTableWidgetQTabBar上启用自定义风格的滚动条。我们首先创建了一个CustomProxyStyle类,它继承自QProxyStyle,并重写了drawPrimitive()函数。我们在这个函数检查是否绘制QStyle::PE_IndicatorTabTear元素,如果是,则绘制自定义滚动条。然后我们在主函数创建了一个CustomProxyStyle对象,并设置给QTabWidget的样式。这将启用自定义风格的滚动条。你需要根据自己的需求实现自定义滚动条的绘制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值