给写一个完整的简单示例
时间: 2024-04-22 07:27:55 浏览: 57
当然可以!以下是一个完整的简单示例,展示了如何自定义ListView的列表项:
```cpp
// main.cpp
#include <QApplication>
#include <QListView>
#include <QStandardItemModel>
#include <QStyledItemDelegate>
#include <QPainter>
class CustomDelegate : public QStyledItemDelegate
{
public:
CustomDelegate(QObject *parent = nullptr) : QStyledItemDelegate(parent) {}
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override
{
QStyleOptionViewItem opt = option;
initStyleOption(&opt, index);
// 绘制背景
painter->fillRect(opt.rect, opt.backgroundBrush);
// 绘制文本
painter->drawText(opt.rect, Qt::AlignCenter, index.data().toString());
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// 创建数据模型
QStandardItemModel model;
for (int i = 1; i <= 10; ++i) {
QStandardItem *item = new QStandardItem(QString("Item %1").arg(i));
model.appendRow(item);
}
// 创建ListView
QListView listView;
listView.setModel(&model);
// 设置自定义代理
CustomDelegate delegate;
listView.setItemDelegate(&delegate);
listView.show();
return a.exec();
}
```
在这个示例中,我们创建了一个CustomDelegate类来自定义列表项的外观。在paint()函数中,我们绘制了列表项的背景,并在中央绘制了文本。
主函数中,我们创建了一个QStandardItemModel作为ListView的数据模型,并添加了一些示例项。然后,我们创建了一个QListView对象,并将数据模型和自定义代理设置给它。最后,我们显示了ListView。
运行这个示例,您将看到一个带有自定义列表项外观的ListView,每个列表项都显示为一个居中对齐的文本。
希望这个完整的简单示例对您有所帮助!如果您有任何进一步的问题,请随时提问。
阅读全文