创意设计报告模板/百度seo教程视频
模型视图的关系
## 常见模型
1 QAbstractListModel:用来创建一维列表模型
2 QAbstractTableModel: 用来创建二维列表模型
3 QStandardItemModel:用来存储定制数据的通用模型
4 QFileSystemModel:本地系统的文件和目录信息
5 数据库模型: QSqlQueryModel、QSqlTableModel、QSqlRelationalTableModel:存取数据库数据
常见视图
1 QListView:用于显示列表
QListView m_listView;m_listView.setParent(this);m_listView.move(10, 120);m_listView.resize(300, 100);
2 QTableView:用于显示表格
QTableView m_tableView;m_tableView.setParent(this);m_tableView.move(10, 10);m_tableView.resize(300, 100);
3 QTreeView:用于显示层次数据
QTreeView m_treeView;m_treeView.setParent(this);m_treeView.move(10, 230);m_treeView.resize(300, 100);
往模型里面放数据:数据项类QStandardItem
数据角色
项目代码:
/*MainWindow.h*/
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QtGui/QMainWindow>
#include <QTableView>
#include <QTreeView>
#include <QListView>
#include <QStandardItemModel>
class MainWindow : public QMainWindow
{Q_OBJECT
private:QStandardItemModel m_standerdModel;QTableView m_tableView;QTreeView m_treeView;QListView m_listView;void initStanderdModel();void initTableModel();
public:MainWindow(QWidget *parent = 0);~MainWindow();
};#endif // MAINWINDOW_H
/*MainWindow.cpp*/
#include "MainWindow.h"
#include <QStandardItem>MainWindow::MainWindow(QWidget *parent): QMainWindow(parent, Qt::WindowContextHelpButtonHint)
{initStanderdModel();initTableModel();m_tableView.setModel(&m_standerdModel);m_treeView.setModel(&m_standerdModel);m_listView.setModel(&m_standerdModel);
}
void MainWindow::initStanderdModel()
{QStandardItem* root = m_standerdModel.invisibleRootItem();QStandardItem* itemA = new QStandardItem();QStandardItem* itemB = new QStandardItem();QStandardItem* itemC = new QStandardItem();QStandardItem* itemChild = new QStandardItem();itemA->setData("A", Qt::DisplayRole);itemA->setData("Tip A", Qt::ToolTipRole);itemA->setData("Help A", Qt::WhatsThisRole);itemB->setData("B", Qt::DisplayRole);itemB->setData("Tip B", Qt::ToolTipRole);itemC->setData("C", Qt::DisplayRole);itemC->setData("Tip B", Qt::ToolTipRole);itemC->setData("Help C", Qt::WhatsThisRole);itemChild->setData("Child", Qt::DisplayRole);itemChild->setData("Tip Child", Qt::ToolTipRole);itemChild->setData("Help Child", Qt::WhatsThisRole);itemC->setChild(0, 0, itemChild);root->setChild(0, 0, itemA);//itemA、itemB、itemC都是new出来的,这里将数据项root->setChild(0, 1, itemB);//加入模型的同时也相当于指定了父组件,不会造成内存泄漏root->setChild(1, 0, itemC);}
void MainWindow::initTableModel()
{m_tableView.resize(300,100);m_tableView.move(10,10);m_tableView.setParent(this);m_treeView.resize(300,100);m_treeView.move(10,120);m_treeView.setParent(this);m_listView.resize(300,100);m_listView.move(10,230);m_listView.setParent(this);
}
MainWindow::~MainWindow()
{}
/*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();
}
效果: