现在的位置: 首页 > 综合 > 正文

QT__listview_standitemmodel__操作

2014年01月26日 ⁄ 综合 ⁄ 共 2080字 ⁄ 字号 评论关闭
#ifndef LISTVIEWSTANDARD_H
#define LISTVIEWSTANDARD_H

#include <QtGui/QWidget>
#include <QListView>
#include <QStandardItemModel>
class listviewStandard : public QWidget
{
    Q_OBJECT
    
public:
    listviewStandard(QWidget *parent = 0);
    ~listviewStandard();
public slots:
    void addToModel();
    void displayModel();
    void delModel(QModelIndex index);
private:
    QListView *listView;
    QStandardItemModel *standardItemModel;
};

#endif // LISTVIEWSTANDARD_H

#include "listviewstandard.h"
#include <QPushButton>
#include <QGridLayout>
#include <QDebug>
listviewStandard::listviewStandard(QWidget *parent)
    : QWidget(parent)
{
    resize(500,700);
    listView = new QListView(this);
    standardItemModel = new QStandardItemModel(this);

    listView->setModel(standardItemModel);
    listView->setFixedSize(200,300);
    connect(listView,SIGNAL(clicked(QModelIndex)),this,SLOT(delModel(QModelIndex)));

    QPushButton *ptnAdd=new QPushButton("Add");
    QPushButton *ptnDel=new QPushButton("Del");
    QPushButton *ptnDisplay=new QPushButton("Display");
    connect(ptnAdd,SIGNAL(clicked()),this, SLOT(addToModel()));
    connect(ptnDisplay,SIGNAL(clicked()),this,SLOT(displayModel()));

    QGridLayout *winGrid=new QGridLayout;

    winGrid->addWidget(ptnAdd);
    winGrid->addWidget(ptnDel);
    winGrid->addWidget(ptnDisplay);

    setLayout(winGrid);
}

listviewStandard::~listviewStandard()
{
    
}

void listviewStandard::addToModel()
{
    QString string("add to model") ;
    QStandardItem *item = new QStandardItem(string);

    {
        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);
}
void listviewStandard::displayModel()
{
    QList<QStandardItem*> list =standardItemModel->findItems("*",
                                 Qt::MatchWildcard |
                                 Qt::MatchRecursive);//查找model中的Item,

          foreach (QStandardItem* item, list)
          {
                  qDebug() << item->text();
          }


}
void listviewStandard::delModel(QModelIndex index)
{
   standardItemModel->removeRows(index.row(),1);
   //如果是按钮的话,standardItemModel->removeRows(listview->currentIndex().row(),1);
}

#include <QtGui/QApplication>
#include "listviewstandard.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    listviewStandard w;
    w.show();
    
    return a.exec();
}

抱歉!评论已关闭.