【二十一】【QT开发应用】ListWiddget图标模式

embedded/2024/9/22 15:15:42/

代码

demo13_listwidget::demo13_listwidget(QWidget* parent): QWidget(parent) {ui.setupUi(this);resize(600, 500);QVBoxLayout* pMainVLayout = new QVBoxLayout(this);QListWidget* pListWidget = new QListWidget(this);pListWidget->setViewMode(QListView::IconMode);pListWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);pListWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);QString qss = "QListWidget{border:none; background:rgb(251,251,251);} \QListWidget::item{background:blue;  \margin-left:20px;  \margin-top:10px; \}";pListWidget->setStyleSheet(qss);int vScrollBarWidth = 30;pListWidget->setFixedWidth(180 * 3 + vScrollBarWidth + 1);for (int i = 0; i < 15; i++) {QIcon icon(":/demo13_listwidget/resources/editor.png");QString name = QString(u8"用户%1").arg(QString::number(i));QListWidgetItem* pItem = new QListWidgetItem(icon, name);pItem->setSizeHint(QSize(180, 180));pListWidget->addItem(pItem);}pMainVLayout->addWidget(pListWidget);}

调整窗口大小

resize(600, 500);
  • 调整窗口大小为600x500像素。

创建垂直布局

QVBoxLayout* pMainVLayout = new QVBoxLayout(this);
  • 创建一个垂直布局(QVBoxLayout),并将其设置为当前窗口的主布局,用于管理子部件的排列方式。

创建QListWidget

QListWidget* pListWidget = new QListWidget(this);
  • 创建一个新的QListWidget,用于显示带有图标和文本的项目列表,并将其作为当前窗口的子部件。

设置ListWedget为图标模式

pListWidget->setViewMode(QListView::IconMode);
  • 设置QListWidget的显示模式为QListView::IconMode,即以图标的方式显示每个列表项,而不是默认的文本列表模式。

设置滚动条策略

pListWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
pListWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);
  • 设置滚动条策略:
    • 水平滚动条始终关闭(Qt::ScrollBarAlwaysOff)。
    • 垂直滚动条根据需要显示(Qt::ScrollBarAsNeeded)。

定义样式表

QString qss = "QListWidget{border:none; background:rgb(251,251,251);} \QListWidget::item{background:blue;  \margin-left:20px;  \margin-top:10px; \
}";
pListWidget->setStyleSheet(qss);
  • 定义了一个样式表(QSS)来定制QListWidget的外观:
    • QListWidget{border:none; background:rgb(251,251,251);}:移除边框,设置背景颜色为浅灰(rgb(251,251,251))。
    • QListWidget::item{background:blue; margin-left:20px; margin-top:10px;}:每个项目的背景色为蓝色,并设置左边距为20像素,顶部边距为10像素。

设置ListWidget固定宽度

int vScrollBarWidth = 30;
pListWidget->setFixedWidth(180 * 3 + vScrollBarWidth + 1);
  • 设置了垂直滚动条的宽度为30像素。
  • pListWidget->setFixedWidth(180 * 3 + vScrollBarWidth + 1);:将QListWidget的宽度固定为显示三列图标的宽度(每列宽度180像素),加上滚动条的宽度和1像素的边距。

循环添加ListWidgetItem

for (int i = 0; i < 15; i++) {QIcon icon(":/demo13_listwidget/resources/editor.png");QString name = QString(u8"用户%1").arg(QString::number(i));QListWidgetItem* pItem = new QListWidgetItem(icon, name);pItem->setSizeHint(QSize(180, 180));pListWidget->addItem(pItem);
}
  • 创建一个循环,用来向QListWidget中添加15个带有图标和文本的列表项:
    • 每个列表项使用同一个图标(resources/editor.png)和文本(用户0用户14)。
    • pItem->setSizeHint(QSize(180, 180));:设置每个列表项的大小为180x180像素。
    • pListWidget->addItem(pItem);:将每个创建的项目添加到QListWidget中。

添加ListWidget到布局中

pMainVLayout->addWidget(pListWidget);
  • pListWidget添加到主垂直布局中,使其在窗口中显示。

程序运行结果

在这里插入图片描述

结尾

最后,感谢您阅读我的文章,希望这些内容能够对您有所启发和帮助。如果您有任何问题或想要分享您的观点,请随时在评论区留言。
同时,不要忘记订阅我的博客以获取更多有趣的内容。在未来的文章中,我将继续探讨这个话题的不同方面,为您呈现更多深度和见解。
谢谢您的支持,期待与您在下一篇文章中再次相遇!


http://www.ppmy.cn/embedded/115099.html

相关文章

当大语言模型应用到教育领域时会有什么火花出现?

当大语言模型应用到教育领域时会有什么火花出现&#xff1f; LLM Education会出现哪些机遇与挑战? 今天笔者分享一篇来自New York University大学的研究论文&#xff0c;另外一篇则是来自Michigan State University与浙江师范大学的研究论文&#xff0c;希望对这个话题感兴趣…

工程车辆目标检测、程车检测算法、工程车辆类型检测算法

工程车检测算法主要用于智能交通系统、建筑工地管理、矿山开采、物流运输等领域&#xff0c;通过图像识别技术来检测和识别工程车&#xff0c;以提高安全管理、交通流量管理和资源调度的效率。以下是关于工程车检测算法的技术实现、应用场景及优势的详细介绍。 一、技术实现 工…

GroupMamba: Parameter-Efficient and Accurate Group Visual State Space Model

GroupMamba: Parameter-Efficient and Accurate Group Visual State Space Model 1.介绍2.相关工作3.方法3.1预备知识3.2整体架构3.3调制组Mamba层3.3.1视觉单一选择性扫描&#xff08;Visual Single Selective Scan&#xff0c;简称VSSS&#xff09;块3.3.2分组Mamba操作3.3.3…

QT中的消息机制(事件机制)总结

Qt 中的消息机制&#xff08;事件机制&#xff09;是框架的核心部分之一&#xff0c;它通过事件驱动模型来处理用户交互和系统事件。Qt 的事件处理系统允许对象之间通过发送和接收消息或事件来进行通信&#xff0c;这种机制使得应用程序能以响应式的方式来处理各种输入和输出。…

QT 中中文乱码的问题处理

在使用 QT 开发应用程序时&#xff0c;可能会遇到中文乱码的问题&#xff0c;这是因为 QT 使用的编码方式和系统的编码方式不一致导致的。下面是 QT 中中文乱码的问题处理的方法&#xff1a; 设置编码方式 第一步&#xff1a;在 QT 中&#xff0c;可以使用 QTextCodec 对象来设…

邮件安全治理

邮件安全治理 1.入站安全防护2.出站安全防护 1.入站安全防护 1、邮箱账号暴力破解 邮箱暴力破解&#xff0c;除了常见的通过POP3、SMTP、IMAP协议进行频繁认证请求外&#xff0c;还有一些是通过访问邮件系统登录页面进行的&#xff0c;比如渗透测试人员非常喜欢的OWA或者EWS接…

c++249多态

#include<iostream> using namespace std; class Parent { public:Parent(int a){this->a a;cout << " Parent" << a << endl;} public:virtual void print()//在子类里面可写可不写 {cout << "Parent" <<a<&l…

Java面试篇基础部分-ReentrantLock详解

ReentrantLock 是继承了Lock接口,并且实现了再接口中定义的方法,属于一个可重入的独占锁。ReentrantLock 通过自定义队列同步器(Abstract Queued Synchroinzed,AQS)来实现锁的获取与释放。   那么什么是独占锁呢?独占锁就是指这个锁在同一时刻只能被一个线程所获取到,…