【QT入门】 QListWidget各种常见用法详解之图标模式

往期回顾

【QT入门】 Qt代码创建布局之多重布局变换与布局删除技巧-CSDN博客

【QT入门】 QTabWidget各种常见用法详解-CSDN博客

【QT入门】 QListWidget各种常见用法详解之列表模式-CSDN博客

【QT入门】 QListWidget各种常见用法详解之图标模式

QListWidget有列表和图标两种显示模式,默认是列表模式,列表模式上方链接已给出,我们现在看图标模式。

enum ViewMode
{
ListMode, //列表模式
IconMode //图标模式
};

学一个新的控件,首先要看他是怎么构造的,其次看怎么用,常用的方法,然后要去看他的信号函数,特别是熟悉常用方法和信号。一般来说ui界面创建和手动代码创建都要学会。 

这里我们先只看纯代码设计。

一、纯代码设计

1、最终效果

2、代码思路

 2.1创建布局

1、我们首先创建水平或者垂直布局,因为只有一个布局,所以哪个都行。

QVBoxLayout* pVLay = new QVBoxLayout(this);
2.2创建listWidget

 2、创建一个listWidget来存放item,注意,是先放listWidgetItem,然后在listWidgetItem里面放Icon

 QListWidget* pLWidget = new QListWidget(this);
2.3设置图标模式

 3、这里需要注意,由于QListWidget默认列表模式,所以我们使用图标模式还需要进行设置,加了才能显示图标

pLWidget->setViewMode(QListView::IconMode);

setViewMode一共就两个参数
enum ViewMode { ListMode, IconMode };列表或者图标模式

2.4设置滑动条

4、设置滑动条,水平滑动条和垂直滑动条,注意用的方法名

 pLWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
 pLWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);

控制滑动条的三个参数  

ScrollBarAsNeeded,//需要时显示       
ScrollBarAlwaysOff,//不显示        
ScrollBarAlwaysOn//显示
2.5初始化QIcon和QString对象

5、多个图标用for循环进行加载,先初始化QIcon和QString对象,一个是图标路径,一个是图标名字,这里都是没有new的,直接隐式调用了,

QIcon Icon(":/QListWidget_03/res/vim.png");
QString name = QString("LinFeng00%1").arg(QString::number(i));

同时这里用法要知道,怎么实现把i这个自增参数加到QString对象里面去,而且我是可以多次使用的,比如

QString name = QString("LinFeng%1And%2And%3").arg(QString::number(i)).arg(QString::number(i)).arg(QString::number(i));
 2.6设置QListWidgetIcon

 6、回看第三点,不是直接放Icon在listWidget里面,是先把Icon和name放到QListWidgetIcon里面

QListWidgetItem* pListItem1 = new QListWidgetItem(Icon, name);

2.7设置item宽高 

7、接着对item设置宽高,这里的item宽高,不能说用整体widget的来算,比如整体widget我设置宽600,item宽200,不能说就能放三个,因为除了item本身宽度,还要考虑滑动条宽度等,所以实际需要的widget宽度肯定更大,另外注意每个item之间的margin-right/left是包含在180里面了的

        pListItem1->setSizeHint(QSize(180,180));

        pLWidget->addItem(pListItem1);
2.7添加listWidget 

 8、最后把listWidget加到布局里就欧克

pVLay->addWidget(pLWidget);

另外其实还可以设计样式对整体图标模式样式进行设计,大家可以自行涉及。

3、完整代码示例

代码注释写的还算详细,应该没啥大问题。

QListWidget_03::QListWidget_03(QWidget *parent)
    : QWidget(parent)
{

    resize(800, 500);

    //创建一个垂直布局,其实这里就一个,水平竖直都可以
    QVBoxLayout* pVLay = new QVBoxLayout(this);

    //创建一个listwidget放item
    QListWidget* pLWidget = new QListWidget(this);
    //这行代码很重要,是用来设置显示模式,不加的话,默认是列表模式,加了才能显示图标
    pLWidget->setViewMode(QListView::IconMode);

    //控制滑动条三个参数
    /*
       enum ScrollBarPolicy {
        ScrollBarAsNeeded,//需要时显示
        ScrollBarAlwaysOff,//不显示
        ScrollBarAlwaysOn//显示
    };
    */
    pLWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
    pLWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);

    //用for循环加载图标
    for (int i = 0; i < 15; i++)
    {
        //先初始化QIcon和QString对象,一个是图标路径,一个是图标名字

        //QIcon的使用,我感觉不是很熟悉
        //QIcon *Icon = new QIcon(":/QListWidget_03/res/vim.png");
         QIcon Icon(":/QListWidget_03/res/vim.png");

         //这里用法要知道,怎么实现把i这个自增参数加到QString对象里面去
        //QString name = QString("LinFeng%1And%2And%3").arg(QString::number(i)).arg(QString::number(i)).arg(QString::number(i));
        QString name = QString("LinFeng00%1").arg(QString::number(i));

        //QListWidgetItem *pListItem1 = new QListWidgetItem(QIcon(":/new/prefix2/res/editor.png"),"editor");
        QListWidgetItem* pListItem1 = new QListWidgetItem(Icon, name);
        //这里的item宽高,不能说用整体widget的来算,比如整体widget我设置宽600,item宽200,不能说就能放三个
       //因为除了item本身宽度,还要考虑滑动条宽度等,所以实际需要的widget宽度肯定更大
        //每个item之间的margin-right/left是包含在180里面了的
        pListItem1->setSizeHint(QSize(180,180));

        pLWidget->addItem(pListItem1);

    }


    pVLay->addWidget(pLWidget);

}

都看到这里了,点个赞再走呗朋友~

加油吧,预祝大家变得更强!

  • 10
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值