一个简单的ListView的例子
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QListView>
#include <QStandardItem>
#include <QStandardItemModel>
#include <QModelIndex>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
QListView *listView;
QStandardItemModel *standardItemModel;
private slots:
void itemClicked(QModelIndex index);
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"#include <QBrush>
#include <QRadialGradient>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
listView = new QListView(this);
standardItemModel = new QStandardItemModel(this);
QStringList strList;
strList.append("string1");
strList.append("string2");
strList.append("string3");
strList.append("string4");
strList.append("string5");
strList.append("string6");
strList.append("string7");
strList << "string8";
strList += "string9";
int nCount = strList.size();
for(int i = 0; i < nCount; i++)
{
QString string = static_cast<QString>(strList.at(i));
QStandardItem *item = new QStandardItem(string);
if(i % 2 == 1)
{
QLinearGradient linearGrad(QPointF(0, 0), QPointF(200, 200));
linearGrad.setColorAt(0, Qt::darkGreen);
linearGrad.setColorAt(1, Qt::yellow);
QBrush brush(linearGrad);
item->setBackground(brush);
}
standardItemModel->appendRow(item);
}
listView->setModel(standardItemModel);
listView->setFixedSize(200,300);
connect(listView,SIGNAL(clicked(QModelIndex)),this,SLOT(itemClicked(QModelIndex)));
}
MainWindow::~MainWindow()
{
}
void MainWindow::itemClicked(QModelIndex index)
{
qDebug() << index.data().toString();
}
main.cpp#include <QtGui/QApplication>#include "mainwindow.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();return a.exec();}
运行结果如下: