QListView 和 QStandardItemModel的使用

实际上用这两个类也就创建了一个list,先看下实现的是一个什么样的东西
 
                        

代码如下:

.cpp

#include "MyWidget.h"
#include <qlistview.h>
#include <qstandarditemmodel.h>
#define MEMORY_FREE(a)if(a){delete a; a = NULL;}

MyWidget::MyWidget(QWidget* parent) : QWidget(parent)
{
    iListView               = new QListView(this);
    iStandardItemModel      = new QStandardItemModel(this);
   
    QStandardItem* item1    = new QStandardItem(QIcon("c:\\Img\\MyListViewEx\\1.bmp"), "item1");
    QStandardItem* item2    = new QStandardItem(QIcon("c:\\Img\\MyListViewEx\\2.bmp"), "item2");
    QStandardItem* item3    = new QStandardItem("item3");
    iStandardItemModel->appendRow(item1);
    iStandardItemModel->appendRow(item2);
    iStandardItemModel->appendRow(item3);
   
    iListView->setIconSize(QSize(40, 30));
    iListView->setModel(iStandardItemModel);
    iListView->setGeometry(QRect(0, 0, 360, 640));
}

MyWidget::~MyWidget()
{
    MEMORY_FREE(iListView);
    MEMORY_FREE(iStandardItemModel);
}

#ifndef MYWIDGET_H_
#define MYWIDGET_H_

#include <QWidget>
class QListView;
class QStandardItemModel;

class MyWidget : public QWidget
{
public:
    MyWidget(QWidget* parent = 0);
    virtual ~MyWidget();
private:
    QListView*              iListView;
    QStandardItemModel*     iStandardItemModel;
};

#endif /* MYWIDGET_H_ */

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用 QListViewQStandardItemModel 实现 QComboBox 多选的示例代码: ```python import sys from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplication, QComboBox, QListView, QStandardItem, QStandardItemModel class MultiSelectComboBox(QComboBox): def __init__(self, parent=None): super(MultiSelectComboBox, self).__init__(parent) self.setView(QListView()) # 设置下拉视图为 QListView self.model = QStandardItemModel() self.setModel(self.model) # 设置模型为 QStandardItemModel self.setInsertPolicy(QComboBox.NoInsert) # 禁止用户手动输入 def addItem(self, text, checked=False): item = QStandardItem(text) item.setCheckable(True) item.setCheckState(Qt.Checked if checked else Qt.Unchecked) self.model.appendRow(item) def checkedItems(self): checked_items = [] for row in range(self.model.rowCount()): item = self.model.item(row) if item.checkState() == Qt.Checked: checked_items.append(item.text()) return checked_items if __name__ == '__main__': app = QApplication(sys.argv) combo = MultiSelectComboBox() combo.addItem("Option 1", True) combo.addItem("Option 2") combo.addItem("Option 3") combo.show() sys.exit(app.exec_()) ``` 在上述代码中,我们创建了一个名为 `MultiSelectComboBox` 的自定义多选下拉框类。在该类中,我们使用了 `QListView` 作为下拉视图,并使用 `QStandardItemModel` 作为模型。通过 `addItem` 方法,我们可以添加多个项,并指定是否默认选中。通过 `checkedItems` 方法,我们可以获取当前选中的项。运行上述代码,你将看到一个具有多选功能的下拉框,并且可以选择多个选项。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值