列表样式 水平_分享QListWidget水平滑动示例

这篇博客展示了如何在Qt中实现QListWidget控件的水平滑动效果,包括设置为列表模式、禁止垂直滚动条、启用像素滚动和鼠标左键拖动,以及加载数据和设置样式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

fa04afba6f9425ecb56ea75a114a3575.gif

实现

  • 基于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君公众号后台回复"控件"获取更多相关内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值