QT列表-QListWidget

示例

在 Qt 中实现类似您提供的图片中的效果(即一个包含多个应用图标和名称的列表)通常涉及使用 QListWidgetQListViewQGridView(后者可能需要自定义,因为 Qt 标准库中并没有直接提供这个控件)。不过,对于简单的列表展示,QListWidgetQListView 就足够了。

以下是一个使用 QListWidget 来实现这种效果的简要步骤:

  1. 创建主窗口 :首先,您需要创建一个 Qt 主窗口(QMainWindowQWidget 都可以)。

  2. 添加 QListWidget :在主窗口的布局中添加一个 QListWidget。您可以使用 Qt Designer 来拖放这个控件,或者通过代码来创建和添加它。

  3. 设置 QListWidgetItem :对于每个应用,您需要创建一个 QListWidgetItem。这个项可以包含图标和文本(即应用的名称)。您可以使用 QListWidgetItemsetIcon()setText() 方法来设置这些属性。

  4. 添加 QListWidgetItem 到 QListWidget :将每个 QListWidgetItem 添加到 QListWidget 中。

  5. 自定义样式 (可选):如果您希望列表项看起来与图片中的效果更相似,您可能需要自定义 QListWidgetQListWidgetItem 的样式。这可以通过设置样式表(QSS)或使用委托(QStyledItemDelegate)来实现。

  6. 响应事件 (可选):如果您希望用户能够与列表项交互(例如,点击某个应用以启动它),您需要连接 QListWidget 的信号(如 itemClicked())到相应的槽函数。

以下是一个简单的代码示例,展示了如何使用 QListWidget 来创建一个包含图标和文本的列表:

复制代码
#include <QApplication>
#include <QListWidget>
#include <QListWidgetItem>
#include <QIcon>
​
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
​
    QListWidget listWidget;
    listWidget.setWindowTitle("应用列表");
    listWidget.setViewMode(QListWidget::IconMode); // 设置图标模式
    listWidget.setResizeMode(QListWidget::Adjust); // 调整图标大小以适应窗口
    listWidget.setIconSize(QSize(64, 64)); // 设置图标大小
    listWidget.setSpacing(10); // 设置图标之间的间距
​
    // 添加应用项
    QListWidgetItem *item1 = new QListWidgetItem(QIcon(":/path/to/icon1.png"), "应用名称1");
    QListWidgetItem *item2 = new QListWidgetItem(QIcon(":/path/to/icon2.png"), "应用名称2");
    // ... 添加更多项
​
    listWidget.addItem(item1);
    listWidget.addItem(item2);
    // ... 添加更多项到listWidget
​
    listWidget.show();
​
    return app.exec();
}

请注意,:/path/to/icon1.png 是图标资源的路径,您需要确保这些图标资源已经被添加到您的 Qt 项目中,并且路径是正确的。

此外,如果您希望列表项具有更复杂的布局(例如,除了图标和名称之外还包含其他信息),您可能需要使用 QListView 与自定义的模型(QAbstractListModelQStandardItemModel)以及委托(QStyledItemDelegate)。这样,您可以完全控制每个列表项的渲染方式。

完善

复制代码
 ui->listWidget->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); //去掉垂直滚动条
 ui->listWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//去掉水平滚动条
 
 
  QListWidgetItem *item1=new QListWidgetItem(QIcon(":/ico/ico/10102.ico"),"腾讯");
  QListWidgetItem *item2=new QListWidgetItem(QIcon(":/ico/ico/10102.ico"),"应用名称");
​
  ui->listWidget->addItem(item1);
  ui->listWidget->addItem(item2);
​
  item1->setForeground(QBrush(QColor(Qt::white))); //设置文字颜色
​
  //批量设置文字颜色
  for(int i=0;i<ui->listWidget->count();i++){
      QListWidgetItem *item=ui->listWidget->item(i);
      item->setForeground(QBrush(QColor(Qt::white)));
  }
​
  ui->listWidget->show();
相关推荐
ct9782 分钟前
React 状态管理方案深度对比
开发语言·前端·react
数量技术宅21 分钟前
2026量化前沿:从Reddit热帖到Python实战,如何用赫斯特指数(Hurst)狙击虚假突破?
开发语言·python
华如锦28 分钟前
面了很多 Java转AI Agent方向,一些面试题总结
java·开发语言·人工智能·python·ai
huangdong_30 分钟前
电商商品SKU图自动分类技术实现:从DOM解析到智能归档
开发语言
dog25033 分钟前
网络长尾延时的重尾本质
开发语言·网络·php
Dxy12393102161 小时前
Python线程锁:为什么多线程会“打架“,以及怎么解决
开发语言·前端·python
guygg881 小时前
人行走作用下板的振动响应 MATLAB 仿真
开发语言·matlab
小二·1 小时前
Next.js 15 全栈开发实战
开发语言·javascript·ecmascript
fox_lht2 小时前
15.3.改进我们之前的输入、输出项目
开发语言·后端·学习·rust
java1234_小锋2 小时前
LangChain4j 开发Java Agent智能体- 多模态支持
java·开发语言·langchain4j