QListView
来源:互联网 发布:ipad推荐 知乎 编辑:程序博客网 时间:2024/06/08 19:04
对于搞J2ee开发的,MVC是再熟悉不过了,Model,View,Controller,qt的model/view模式跟MvC差不多。
model提供数据模型,view展示数据,delegate会对数据项进行渲染。model,view,delegate通过信号/槽机制通信。
前面在QML中就学过ListView.
- import Qt 4.7
- ListModel {
- id: fruitModel
- ListElement {
- name: "Apple"
- cost: 2.45
- }
- ListElement {
- name: "Orange"
- cost: 3.25
- }
- ListElement {
- name: "Banana"
- cost: 1.95
- }
- }
- Component {
- id: fruitDelegate
- Item {
- width: 200; height: 50
- Text { text: name }
- Text { text: '$' + cost; anchors.right: parent.right }
- // Double the price when clicked.
- MouseArea {
- anchors.fill: parent
- onClicked: fruitModel.setProperty(index, "cost", cost * 2)
- }
- }
- }
- import Qt 4.7
- istView {
- anchors.fill: parent
- model: fruitModel
- delegate: fruitDelegate
- }
下面是一个简单的ListView的例子:
- #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
- #include "mainwindow.h"
- #include "ui_mainwindow.h"
- #include <QBrush>
- #include <QRadialGradient>
- #include <QDebug>
- MainWindow::MainWindow(QWidget *parent) :
- QMainWindow(parent),
- ui(new Ui::MainWindow)
- {
- ui->setupUi(this);
- 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()
- {
- delete ui;
- }
- void MainWindow::itemClicked(QModelIndex index)
- {
- qDebug() << index.data().toString();
- }
对于以上例子说明:
QStringList用于提供了一个String的List集合.继承自QList<QString>.
公共方法:
QStringList () QStringList ( const QString & str ) QStringList ( const QStringList & other ) QStringList ( const QList<QString> & other )boolcontains ( const QString & str, Qt::CaseSensitivity cs = Qt::CaseSensitive ) constQStringListfilter ( const QString & str, Qt::CaseSensitivity cs = Qt::CaseSensitive ) constQStringListfilter ( const QRegExp & rx ) constintindexOf ( const QRegExp & rx, int from = 0 ) constintindexOf ( const QString & value, int from = 0 ) constintindexOf ( QRegExp & rx, int from = 0 ) constQStringjoin ( const QString & separator ) constintlastIndexOf ( const QRegExp & rx, int from = -1 ) constintlastIndexOf ( const QString & value, int from = -1 ) constintlastIndexOf ( QRegExp & rx, int from = -1 ) constintremoveDuplicates ()QStringList &replaceInStrings ( const QString & before, const QString & after, Qt::CaseSensitivity cs = Qt::CaseSensitive )QStringList &replaceInStrings ( const QRegExp & rx, const QString & after )voidsort ()QStringListoperator+ ( const QStringList & other ) constQStringList &operator<< ( const QString & str )QStringList &operator<< ( const QStringList & other )
添加元素可使用append(),+=,<<
迭代元素有三种方式:
- 使用Java索引风格:
- for (int i = 0; i < font.size(); ++i)
- cout << fonts.at(i).toLocal8Bit().constData() <<endl;
- //Java迭代器风格:
- QStringListIterator iterator(fonts);
- while(iterator.hasNext())
- count << iterator.next().toLocal8Bit().constData() << endl;
- //STL迭代器风格:
- QStringList::const_iterator constIterator;
- for (const_iterator = fonts.constBegin(); const_iterator != fonts.constEnd(); ++constIterator)
- cout << (*const_iterator).toLocal8Bit().constData() << endl;
还有QList,QString 的一大堆方法 ,呵呵.
QStandardItemModel类提供了一个用来存储自定义数据的普通的model。
QStandardItemModel可以用来存储标准的QT数据类型。它是Model/View之一。提供了典型的item-base工作模型。它的Item是QStandardItem类型的.
QStandardItemModel实现了QAbstractItemModel接口,也就意味着这个model能被用于提供任何支持这个接口的的view(如QListView,QTableView,QTreeView,和你自己定义的View)
QStandardItem类提供了用于QStandardItemModel的Item,通常包含文本,图标或复选框等.
- QListView
- QListView
- QListView
- QListView
- QListView 使用方法
- Qt QListView
- QListView 類別
- QListView和QListWidget
- Qt QListView用法
- QListView QListWidget 弹出菜单
- Qt之QListView
- QListView高级应用
- Remove QListView background
- Qlistview用法例子
- QListView的样式
- QListView 实现图片thumbnail
- QListView MVC 模型
- QT 之 QListView类
- Intents和Intent Filters(理论部分)
- HashMap的用法
- ARM_reference_book_or_information
- Phonegap程序中,检测到按下Home键按下代码
- opendir 、readdir 小结
- QListView
- c++中的类型转换
- sql STUFF用法
- Android学习笔记:Android基础知识总结
- 开启服务器,自动加载类是否需要开辟新的线程研究
- ssh-note
- Java学习者的25个目标
- 设计模式——工厂模式(factory)
- AlertDialog使用实例