QListView 滚动条的两种滚动模式


一种是按Item滚动, 一种是按像素滚动.  两种方式 , 按需所用.


enum QAbstractItemView::ScrollMode
Constant	Value	Description
QAbstractItemView::ScrollPerItem	0	The view will scroll the contents one item at a time.
QAbstractItemView::ScrollPerPixel	1	The view will scroll the contents one pixel at a time.

setVerticalScrollMode(QAbstractItemView::ScrollPerPixel);




Qt中,要创建一个滚动条(QScrollBar)跟随鼠标指针移动,通常是在处理窗口或控件的鼠标滚轮事件(QWheelEvent)时动态更新滚动条的位置。以下是一个简单的例子,展示了如何在一个窗口中做到这一点: ```cpp #include <QApplication> #include <QWidget> #include <QVBoxLayout> #include <QScrollBar> #include <QWheelEvent> class ScrollableWindow : public QWidget { public: ScrollableWindow(QWidget *parent = nullptr) : QWidget(parent), scrollBar(new QScrollBar(Qt::Horizontal)) { QVBoxLayout* layout = new QVBoxLayout(); setLayout(layout); // 设置初始滚动范围 scrollBar->setRange(0, 100); // 当鼠标滚轮被按下时,开始跟踪 connect(scrollBar, &QScrollBar::valueChanged, this, &ScrollableWindow::scrollBarValueChanged); connect(this, &ScrollableWindow::wheelEvent, this, &ScrollableWindow::handleWheelEvent); layout->addWidget(scrollBar); } private slots: void scrollbarValueChanged(int value) { // 更新窗口内部视图的滚动位置,根据scrollBar的变化 // 这里只是一个占位,你需要根据实际情况替换为更新视图的部分 int viewScrollPosition = ...; // 根据value计算视图滚动位置 // 设置窗口视图的新位置 updateViewScroll(viewScrollPosition); } void handleWheelEvent(QWheelEvent *event) { if (event->delta() > 0) { // 如果向上滚 // 增加滚动条值,模拟更多滚动 scrollBar->setValue(scrollBar->value() + 5); // 可以调整步长 } else if (event->delta() < 0) { // 如果向下滚 scrollBar->setValue(scrollBar->value() - 5); // 反之亦然 } } // 这个方法需要根据视图的具体实现来实现,比如QListViewQTableView等 virtual void updateViewScroll(int position) {} }; int main(int argc, char *argv[]) { QApplication app(argc, argv); ScrollableWindow window; window.show(); return app.exec(); } ``` 在这个示例中,`scrollBarValueChanged`槽函数会在滚动条滑动时被调用,而`handleWheelEvent`则在接收到鼠标滚轮事件时增加或减少滚动条的值。`updateViewScroll`方法是你需要根据你的具体视图类型来实现的,它负责更新视图的实际滚动
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值