分享QListWidget水平滑动示例

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

实现

  • 基于QListWidget实现
QListWidget *view = new QListWidget;
  • 设置为列表显示模式
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();

完整代码

#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君(qtjuna)

原文发表时间:2019-08-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券