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();
相关推荐
Wenweno0o18 小时前
0基础Go语言Eino框架智能体实战-chatModel
开发语言·后端·golang
chenjingming66619 小时前
jmeter线程组设置以及串行和并行设置
java·开发语言·jmeter
cch891819 小时前
Python主流框架全解析
开发语言·python
不爱吃炸鸡柳19 小时前
C++ STL list 超详细解析:从接口使用到模拟实现
开发语言·c++·list
十五年专注C++开发19 小时前
RTTR: 一款MIT 协议开源的 C++ 运行时反射库
开发语言·c++·反射
Momentary_SixthSense19 小时前
设计模式之工厂模式
java·开发语言·设计模式
‎ദ്ദിᵔ.˛.ᵔ₎19 小时前
STL 栈 队列
开发语言·c++
勿忘,瞬间19 小时前
数据结构—顺序表
java·开发语言
张張40819 小时前
(域格)环境搭建和编译
c语言·开发语言·python·ai
weixin_4235339920 小时前
【Windows11离线安装anaconda、python、vscode】
开发语言·vscode·python