Qt之QListWidget控件的应用

一、简介

QListWidget类列表框控件用来加载并显示多个列表项。QListWidgetItem类就是列表项类。一般列表框控件中的列表项有2种加载方式:

  1. 一种是由用户手动添加的列表项,比如音乐播放器中加载音乐文件的文件列表,每一个音乐文件都是一个列表项。用户可以进行增加、删除、单击以及双击等操作。
  2. 一种是由程序员事先编写好供用户选择的列表项,比如播放器的视频列表(或餐厅的电子菜单,每一个列表对应一个列表项。用户一般进行单击和双击操作。

二、实现效果——爱奇艺播放器的视频列表

三、源代码

    QListWidget *IQY_video_win=new QListWidget();//创建列表控件
    //视频图片窗口
    QVBoxLayout *right_main_layout7 = new QVBoxLayout;
    //    IQY_video_win->resize(800, 300);
    IQY_video_win->setIconSize(QSize(280,370));
    IQY_video_win->setViewMode(QListView::IconMode);//设置显示模式为图标模式
    IQY_video_win->setMovement(QListView::Static);
    IQY_video_win->setResizeMode(QListView::Adjust);
    QString path = QString(QDir::currentPath()+"/image/IQY/bigImg");//图片路径
    qDebug()<<path;
    QDir dir(path);
    QStringList moviefilenames;
    moviefilenames << "*.png";
    qDebug()<<moviefilenames;
 
    QStringList files = dir.entryList(moviefilenames,QDir::Files|QDir::Readable,QDir::Name);
    qDebug()<<files;
    for (int i = 0; i < files.size(); ++i)
    {
        QListWidgetItem *newitem = new QListWidgetItem(QIcon(QPixmap(path+"/"+files.at(i))),files.at(i));
        QFileInfo fi = files.at(i);
        newitem->setText(fi.baseName());//设置列表项的文本
        //        newitem->setSizeHint(QSize(200,200));
        IQY_video_win->addItem(newitem);//加载列表项到列表框
    }
 
    // 屏蔽水平滑动条
    IQY_video_win->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
 
    //屏蔽垂直滑动条
    IQY_video_win->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
 
    // 设置为像素滚动
    IQY_video_win->setHorizontalScrollMode(QListWidget::ScrollPerPixel);
 
    // 设置鼠标左键拖动
    QScroller::grabGesture(IQY_video_win,QScroller::LeftMouseButtonGesture);
    //    IQY_video_win->setStyleSheet(R"(QListWidget {outline: none;border:1px solid white;background-color:black})");
    IQY_video_win->setStyleSheet("QListWidget{outline: none;border:1px solid black;color:gray; background-color:black}"
                             "QListWidget::Item{padding-top:20px; padding-bottom:4px; }"
                             "QListWidget::Item:hover{background:rgb(50,52,57);color:green; }"
                             "QListWidget::item:selected{background:lightgray; color:redgreen }"
                             "QListWidget::item:selected:!active{border-width:0px; background:lightgreen; }"
                             );
 
    IQY_video_win->setSpacing(14);//设置item间隔
    IQY_video_win->show();

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ze言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值