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();
相关推荐
dog25018 分钟前
从重尾到截断流量模型的演进
开发语言·php
qq_4017004135 分钟前
Qt QSS 完全入门写出漂亮界面以及解决样式不生效问题
开发语言·qt
我是一颗柠檬2 小时前
【Java项目技术亮点】覆盖索引与索引下推优化
android·java·开发语言
2601_962440842 小时前
计算机毕业设计之健身房管理系统的设计与实现
java·开发语言·课程设计·旅游·宠物
旖-旎2 小时前
QT系统篇(5)(下)
开发语言·c++·qt
Irissgwe2 小时前
第四章 QT窗口
qt
摇滚侠2 小时前
方法 A 等方法 B 执行完再执行 叫同步调用还是异步调用 JS 默认是同步调用还是异步调用
开发语言·javascript·ecmascript
liulun3 小时前
C++ WinRT中的事件
开发语言·c++
whitelbwwww3 小时前
c++运行onnx模型
开发语言·c++
码来的小朋友3 小时前
手把手教你用 Python + PyQt5 做一个可视化图片切图工具
开发语言·python·microsoft