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

代码

cpp 复制代码
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);

}

调整窗口大小

cpp 复制代码
resize(600, 500);
  • 调整窗口大小为600x500像素。

创建垂直布局

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

创建QListWidget

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

设置ListWedget为图标模式

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

设置滚动条策略

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

定义样式表

cpp 复制代码
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固定宽度

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

循环添加ListWidgetItem

cpp 复制代码
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到布局中

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

程序运行结果

结尾

最后,感谢您阅读我的文章,希望这些内容能够对您有所启发和帮助。如果您有任何问题或想要分享您的观点,请随时在评论区留言。

同时,不要忘记订阅我的博客以获取更多有趣的内容。在未来的文章中,我将继续探讨这个话题的不同方面,为您呈现更多深度和见解。

谢谢您的支持,期待与您在下一篇文章中再次相遇!

相关推荐
Larry_Yanan2 小时前
QML面试常见问题(一)QML中组件呈现方式的方法有哪些
开发语言·c++·qt·ui·面试
程序leo源5 小时前
Qt信号与槽深度详解
c语言·开发语言·数据库·c++·qt·c#
yu85939586 小时前
基于 QT5.7.0 的八线激光雷达点云聚类实现
开发语言·qt·聚类
努力努力再努力wz6 小时前
【C++高阶数据结构系列】:时间轮定时器详解:原理分析与代码实现,带你从零手撕时间轮!(附时间轮的实现源码)
c语言·开发语言·数据结构·c++·qt·算法·ui
郝学胜-神的一滴7 小时前
Qt 高级开发 006: 架构全解 + 高效学习指南
开发语言·c++·qt·程序人生·架构
会开花的二叉树7 小时前
Qt信号槽这套机制
开发语言·qt
小短腿的代码世界8 小时前
从KB到字节:Qt行情数据压缩与传输优化的全链路透视——LZ4、Snappy与自定义二进制协议的极限压榨
开发语言·qt
xiaoye-duck9 小时前
Qt 入门指南:从Qt历史背景、框架认知到安装和环境搭建
开发语言·qt
hanbr10 小时前
Qt:事件处理与绘图详解
开发语言·数据库·qt
(Charon)11 小时前
【C++/Qt】Qt 实现 UDP 测试工具:客户端发送、服务器监听与消息收发
服务器·qt·udp