Model和View的搭配使用
DEMO pro文件#-------------------------------------------------## Project created by QtCreator 2018-10-13T14:45:13##-------------------------------------------------QT += core guigreaterThan(QT_MAJOR_VERSION, 4): QT += widgetsTARGET = ch801TEMPLATE = appSOURCES += main.cpp\ mainwindow.cppHEADERS += mainwindow.h
mainwindow.h
#ifndef MAINWINDOW_H#define MAINWINDOW_H#includeclass MainWindow : public QMainWindow{ Q_OBJECTpublic: MainWindow(QWidget *parent = 0); ~MainWindow();};#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent){}MainWindow::~MainWindow(){}
mian.cpp
#include "mainwindow.h"#include#include #include #include #include #include #include #include int main(int argc, char *argv[]){ QApplication a(argc, argv); QDirModel model; //先装出一个QDirModel以供使用 /*新建三种不同的View对象,以便文件目录可以以三种不同的方式显示*/ QTreeView tree; QTableView table; QListView list; //调用setModel()函数设置view对象的Model为QDirModel对象的model tree.setModel(&model); table.setModel(&model); list.setModel(&model); //设置QTreeView对象的方式为多选 tree.setSelectionMode(QAbstractItemView::MultiSelection); //设置QListView和QTreeView使用相同的对象 list.setSelectionModel(tree.selectionModel()); //设置QTableView和QTreeView使用相同的对象 table.setSelectionModel(tree.selectionModel()); QObject::connect(&tree,SIGNAL(doubleClicked(QModelIndex)), &list,SLOT(setRootIndex(QModelIndex))); QObject::connect(&tree,SIGNAL(doubleClicked(QModelIndex)), &table,SLOT(setRootIndex(QModelIndex))); QSplitter *splitter=new QSplitter; splitter->addWidget(&table); splitter->addWidget(&tree); splitter->addWidget(&list); splitter->setWindowTitle(QObject::tr("Model/View")); splitter->show(); return a.exec();}/* * 配置一个View去显示model中的数据,只需要简单地调用setModel(),并把目录 * model作为参数传递。 * * setRootIndex()告诉View显示那个目录的信息,这里需要提供一个model index * 然后用这个model index去model中获取数据*/