zoukankan      html  css  js  c++  java
  • Qt Model/View学习(二)

    Model和View的搭配使用
    DEMO
    pro文件

    #-------------------------------------------------
    #
    # Project created by QtCreator 2018-10-13T14:45:13
    #
    #-------------------------------------------------
    
    QT       += core gui
    
    greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    
    TARGET = ch801
    TEMPLATE = app
    
    
    SOURCES += main.cpp
            mainwindow.cpp
    
    HEADERS  += mainwindow.h
    

    mainwindow.h

    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        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 <QApplication>
    #include <QDirModel>
    #include <QTreeView>
    #include <QListView>
    #include <QTableView>
    #include <QAbstractItemModel>
    #include <QAbstractItemView>
    #include <QSplitter>
    
    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中获取数据
    */
    
    
  • 相关阅读:
    团队作业6——展示博客(alpha阶段)
    第八天敏捷冲刺
    第七天敏捷冲刺
    第六天敏捷冲刺
    第五天敏捷冲刺
    第四天敏捷冲刺
    第三天敏捷冲刺
    linux查询内存使用情况
    input hidden 属性
    于Java网络爬虫---模拟txt文件上传操作。
  • 原文地址:https://www.cnblogs.com/Manual-Linux/p/9783574.html
Copyright © 2011-2022 走看看