首页 > 其他分享 >【QT入门】 QListWidget各种常见用法详解之图标模式

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

时间:2024-03-29 19:31:46浏览次数:19  
标签:QListWidget QT pLWidget item QString new 图标

往期回顾

【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);

}

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

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

标签:QListWidget,QT,pLWidget,item,QString,new,图标
From: https://blog.csdn.net/LF__plus/article/details/137133595

相关文章

  • 【QT入门】 QTabWidget各种常见用法详解
    往期回顾:【QT入门】Qt代码创建布局之分裂器布局详解-CSDN博客【QT入门】Qt代码创建布局之setLayout使用-CSDN博客【QT入门】Qt代码创建布局之多重布局变换与布局删除技巧-CSDN博客 【QT入门】QTabWidget各种常见用法详解一般来说,学一个新的控件,首先要看他是怎么构......
  • 【Qt】常用控件(输入类)
    目录一、LineEdit二、TextEdit三、ComBo四、DateTimeEdit五、Slider一、LineEditQLineEdit用来表示单行输入框,可以输入一段文本,但是不能换行。属性说明test输入框中的文本inputMask输入内容格式约束maxLength最大长度frame是否添加边框echoMode显示方式,normal,Pa......
  • 【QT+QGIS跨平台编译】040:【geos_c+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
    点击查看专栏目录文章目录一、geos_c介绍二、文件下载三、文件分析四、pro文件五、编译实践一、geos_c介绍  GEOS_C(GEOSC++接口)是GEOS库的C语言版本,它提供了一套丰富的API,允许开发者在C++程序中执行复杂的几何形状处理和空间关系分析。GEOS_C是基于JTS(Jav......
  • Qt 大小端字节序转换的方法
    在Qt中,可以使用qToLittleEndian和qToBigEndian两个函数来实现大小端字节序之间的转换。1.转换为小端字节序:1quint32num=0x12345678;2quint32littleEndianNum=qToLittleEndian(num);//转换为小端字节序2.转换为大端字节序:1quint32num=0x12345678;2quint......
  • Qt QByteArray中存储的字节顺序转换
    在QByteArray中,可以使用Qt的函数来实现字节顺序的转换。具体而言,可以使用 qFromBigEndian 和 qFromLittleEndian 函数将大端和小端字节顺序的数据转换为主机字节顺序的数据。同样地,可以使用 qToBigEndian 和 qToLittleEndian 函数将主机字节顺序的数据转换为大端......
  • Qt 大小端转换
    大端模式和小端模式是计算机中经常涉及到的两种字节序,也有大端对齐、小端对齐、大尾、小尾等叫法。一、起源说起这两种模式,就不得不提一下大端(Big-endian)和小端(Little-endian)这两个英文上的起源。“endian”一词来源于乔纳森·斯威夫特的小说格列佛游记。Lilli......
  • 使新版chrome恢复右上角的下载图标
    针对「chrome://flags/#download-bubble」中没有「download-bubble」的情况(新版chrome已去除),可使用以下方法恢复显示右上角的下载图标。 方法打开chrome快捷方式的属性;在目标中末尾处添加 --disable-features=DownloadBubble(首个字符为空格)启动chrome,并按一下Ctrl+J效果......
  • QT 自定义插件问题 error: LNK2001: 无法解析的外部符号
    为了重复利用已有的代码,我使用自定义插件进行开发。当每个插件独立开发时没有遇到问题,但是当插件B引用了插件A时就会在编译时报错error:LNK2001:无法解析的外部符号。例如,先定义一个插件ColorPicker,用于颜色选取。关键代码如下:classQDESIGNER_WIDGET_EXPORTColorPicker:......
  • visio中关于鼠标悬停显示快速形状的三角图标
    这个功能默认是打开的,但是也存在没有打开的情况1.visio选中视图,找到这个自动连接,选中2.点击视觉帮助3.对齐和粘附打钩,形状几何图形打钩 这样就可以了......
  • H5网页调用APP原生分享菜单 方法:mcloudshare://advert?imgUrl=图标链接&link=分享的链
    要在H5网页中调用APP原生的分享菜单,你可以通过以下步骤实现:创建分享按钮或触发分享的交互元素,例如一个按钮或链接。在按钮的点击事件处理程序中,使用JavaScript生成一个调用APP分享功能的URL。根据你提供的信息,生成的URL格式如下:mcloudshare://advert?imgUrl=图......