学习自唐佐林老师的Qt
QStandardItemModel :储自定义数据的通用模型
QTableView 模型 提供了一个表视图的默认模型/视图实现。
QListView 模型 提供了一个列表或图标视图。
QTreeView 模型 提供了树视图的默认模型/视图实现。
Widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QtGui/QWidget>
#include <QTableView>
#include <QListView>
#include <QTreeView>
#include <QStandardItemModel>
class Widget : public QWidget
{
Q_OBJECT
//模型对象,储自定义数据的通用模型
QStandardItemModel m_model;
//QTableView 类提供了一个表视图的默认模型
QTableView m_tableView;
//QListView 模型 提供了一个列表或图标视图。
QListView m_listView;
//QTreeView 模型 提供了树视图的默认模型
QTreeView m_treeView;
void initModel();
void initView();
public:
Widget(QWidget *parent = 0);
~Widget();
};
#endif // WIDGET_H
Widget.cpp
#include "Widget.h"
#include <QStandardItem>
//Qt::WindowContextHelpButtonHint:窗口式样
Widget::Widget(QWidget *parent)
: QWidget(parent, Qt::WindowContextHelpButtonHint)
{
initModel();
initView();
//连接视图和模型 不同的视图显示同一个模型中的数据
m_tableView.setModel(&m_model);
m_listView.setModel(&m_model);
m_treeView.setModel(&m_model);
}
//初始化模型
void Widget::initModel()
{
//得到模型的虚拟根节点
QStandardItem* root = m_model.invisibleRootItem();
//从堆空间创建数据项目
QStandardItem* itemA = new QStandardItem();
QStandardItem* itemB = new QStandardItem();
QStandardItem* itemC = new QStandardItem();
QStandardItem* itemChild = new QStandardItem();
//向数据项中添加数据
/*
Qt::DisplayRole,作为直接可见的提示信息
Qt::ToolTipRole,悬浮框中补充型提示信息
Qt::WhatsThisRole,在状态中显示的提示性信息
*/
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 C", 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);
//将itemChild数据项 放到 itemC数据项下面 0 0 的位置
itemC->setChild(0, 0, itemChild);
//用模型管理数据项,即将数据项放置到模型中。以三元组的方式组织数据,即可以看出每个数据项的索引,如itemA: 0 0 root
root->setChild(0, 0, itemA);
root->setChild(0, 1, itemB);
root->setChild(1, 0, itemC);
}
//初始化视图
void Widget::initView()
{
m_tableView.setParent(this);
m_tableView.move(10, 10);
m_tableView.resize(300, 100);
m_listView.setParent(this);
m_listView.move(10, 120);
m_listView.resize(300, 100);
m_treeView.setParent(this);
m_treeView.move(10, 230);
m_treeView.resize(300, 100);
}
Widget::~Widget()
{
}
main.cpp
#include <QtGui/QApplication>
#include "Widget.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}