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();
相关推荐
灰子学技术1 天前
go response.Body.close()导致连接异常处理
开发语言·后端·golang
二十雨辰1 天前
[python]-AI大模型
开发语言·人工智能·python
Yvonne爱编码1 天前
JAVA数据结构 DAY6-栈和队列
java·开发语言·数据结构·python
Re.不晚1 天前
JAVA进阶之路——无奖问答挑战1
java·开发语言
你这个代码我看不懂1 天前
@ConditionalOnProperty不直接使用松绑定规则
java·开发语言
pas1361 天前
41-parse的实现原理&有限状态机
开发语言·前端·javascript
琹箐1 天前
最大堆和最小堆 实现思路
java·开发语言·算法
Monly211 天前
Java:修改打包配置文件
java·开发语言
我命由我123451 天前
Android 广播 - 静态注册与动态注册对广播接收器实例创建的影响
android·java·开发语言·java-ee·android studio·android-studio·android runtime
island13141 天前
CANN ops-nn 算子库深度解析:核心算子(如激活函数、归一化)的数值精度控制与内存高效实现
开发语言·人工智能·神经网络