分享QListWidget水平滑动示例

本文介绍利用QListWidget和QSS样式表制作的一个水平滑动列表的示例。

插图

实现

  • 基于QListWidget实现

    1
    QListWidget *view = new QListWidget;
  • 设置为列表显示模式

    1
    view->setViewMode(QListView::ListMode);
  • 设置列表从左往右排列

    1
    view->setFlow(QListView::LeftToRight);
  • 屏蔽水平与垂直的滑动条

    1
    2
    view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
    view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
  • 设置为像素滚动

    1
    view->setHorizontalScrollMode(QListWidget::ScrollPerPixel);
  • 设置鼠标左键拖动

    1
    QScroller::grabGesture(view,QScroller::LeftMouseButtonGesture);
  • 装载列表数据

    1
    2
    3
    4
    5
    6
    for (int i = 0; i < 10; i++) {
    QListWidgetItem *item = new QListWidgetItem(QString::number(i));
    /* 设置文字居中 */
    item->setTextAlignment(Qt::AlignCenter);
    view->addItem(item);
    }
  • 设置样式

    1
    2
    3
    4
    5
    6
    7
    view->setStyleSheet(R"(
    QListWidget { outline: none; border:1px solid gray; color: black; }
    QListWidget::Item { width: 50px; height: 50px; }
    QListWidget::Item:hover { background: #4CAF50; color: white; }
    QListWidget::item:selected { background: #e7e7e7; color: #f44336; }
    QListWidget::item:selected:!active { background: lightgreen; }
    )");
  • 最后显示

    1
    view->show();

完整代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include <QApplication>
#include <QListWidget>
#include <QStringListModel>
#include <QScroller>

int main(int argc, char *argv[])
{
QApplication a(argc, argv);

QListWidget *view = new QListWidget;
view->setWindowTitle(QString::fromLocal8Bit("ListWidget by Qt君"));
view->resize(QSize(350, 50));

/* 设置为列表显示模式 */
view->setViewMode(QListView::ListMode);

/* 从左往右排列 */
view->setFlow(QListView::LeftToRight);

/* 屏蔽水平滑动条 */
view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);

/* 屏蔽垂直滑动条 */
view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);

/* 设置为像素滚动 */
view->setHorizontalScrollMode(QListWidget::ScrollPerPixel);

/* 设置鼠标左键拖动 */
QScroller::grabGesture(view,QScroller::LeftMouseButtonGesture);

/* 装载数据 */
for (int i = 0; i < 10; i++) {
QListWidgetItem *item = new QListWidgetItem(QString::number(i));
/* 设置文字居中 */
item->setTextAlignment(Qt::AlignCenter);
view->addItem(item);
}

/* 设置样式 */
view->setStyleSheet(R"(
QListWidget { outline: none; border:1px solid gray; color: black; }
QListWidget::Item { width: 50px; height: 50px; }
QListWidget::Item:hover { background: #4CAF50; color: white; }
QListWidget::item:selected { background: #e7e7e7; color: #f44336; }
QListWidget::item:selected:!active { background: lightgreen; }
)");
view->show();

return a.exec();
}

关于更多

  • Qt君公众号后台回复”控件“获取更多相关内容。