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();
相关推荐
大傻^14 小时前
SpringAI2.0 Null Safety 实战:JSpecify 注解体系与 Kotlin 互操作
android·开发语言·人工智能·kotlin·springai
魑魅魍魉都是鬼14 小时前
Java 适配器模式(Adapter Pattern)
java·开发语言·适配器模式
笨笨马甲14 小时前
Qt MQTT
开发语言·qt
Fairy要carry15 小时前
面试-Agent上下文过载、步骤混乱的问题
开发语言·python
程序员Ctrl喵15 小时前
异步编程:Event Loop 与 Isolate 的深层博弈
开发语言·flutter
liuyao_xianhui15 小时前
优选算法_两数之和_位运算_C++
java·开发语言·数据结构·c++·算法·链表·动态规划
IT猿手15 小时前
MATLAB模拟四旋翼无人机飞行,机翼可独立旋转
开发语言·matlab·无人机
代龙涛15 小时前
WordPress 主题开发指南:模板文件、函数与页面选型规则
开发语言·后端·php·wordpress
代码探秘者15 小时前
【大模型应用】6.RAG 场景下的向量+关键词混合检索
java·开发语言·人工智能·python·spring