QT项目视图

1、List View清单视图

private:QListView *listview1;
private slots:void slotClickedFunc(const QModelIndex &index);
#include "widget.h"
#include "ui_widget.h"#include <QStringListModel>//字符串列表模型
#include <QStringList>
#include <QMessageBox>//定义一个消息提示框Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);resize(450,250);listview1 = new QListView(this);listview1->setGeometry(20,20,240,160);//设置控件显示位置和控件的大小QStringList qlist;qlist.append("运动类:篮球,足球");qlist.append("娱乐类:看电影,写小说,听音乐");qlist.append("游戏类:五子棋,象棋,扑克");qlist.append("旅游类:国外旅游,国内旅游");//使用数据列表创建数据显示模型进行实现QStringListModel *listmodel = new QStringListModel(qlist);listview1->setModel(listmodel);connect(listview1,&QListView::clicked,this,&Widget::slotClickedFunc);}Widget::~Widget()
{delete ui;
}//模型索引QModelIndex
// 为了确保数据的表示与访问数据的方式是分开的,引入了模型索引的概念。可以通过模型获得的每条信息都由模型索引表示
void Widget::slotClickedFunc(const QModelIndex &index)
{QMessageBox::information(NULL,"兴趣爱好","你的选择是:\n"+index.data().toString());
}
2、Tree View:树视图

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);initTreeViewFunc();
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::initTreeViewFunc()
{//构造一个model:sItemModel = new QStandardItemModel(ui->treeView);sItemModel->setHorizontalHeaderLabels(QStringList()<<QStringLiteral("编号")<<QStringLiteral("初中部 | 高中部"));//创建一级节点到sItemModelQList<QStandardItem*> item1;QStandardItem *item11 = new QStandardItem(QString::number(1));QStandardItem *item12 = new QStandardItem("初中部");item1.append(item11);item1.append(item12);// 对于这个模块添加一行sItemModel->appendRow(item1);//添加一个二级节点添加到第一个一级节点QList<QStandardItem*> item2;QStandardItem *item21 = new QStandardItem(QString::number(2));QStandardItem *item22 = new QStandardItem(QStringLiteral("一年级"));item2.append(item21);item2.append(item22);//添加到第一个一级节点上去item11->appendRow(item2);//三级节点,添加到第一个二级节点QList<QStandardItem*> item3;QStandardItem *item31 = new QStandardItem(QString::number(3));QStandardItem *item32 = new QStandardItem(QStringLiteral("1班"));item3.append(item31);item3.append(item32);//添加到第一个二级节点上去item21->appendRow(item3);//再添加一个三级节点,添加到第一个二级节点QList<QStandardItem*> item4;QStandardItem *item41 = new QStandardItem(QString::number(4));QStandardItem *item42 = new QStandardItem(QStringLiteral("2班"));item4.append(item41);item4.append(item42);//添加到第一个二级节点上去item21->appendRow(item4);//创建一级节点到sItemModelQList<QStandardItem*> item5;QStandardItem *item51 = new QStandardItem(QString::number(2));QStandardItem *item52 = new QStandardItem("高中部");item5.append(item51);item5.append(item52);// 对于这个模块添加一行sItemModel->appendRow(item5);//将这个Model添加到TreeViewui->treeView->setModel(sItemModel);
}
3、Table View:表视图

#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);initTableViewFunc();//调用自定义函数this->setWindowTitle("TableView表视图");
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::initTableViewFunc()
{//1、添加表头,准备数据模型QStandardItemModel *studentModel = new QStandardItemModel();//设置水平表头,第一个参数为列studentModel->setHorizontalHeaderItem(0,new QStandardItem(QObject::tr("学号")));studentModel->setHorizontalHeaderItem(1,new QStandardItem(QObject::tr("姓名")));studentModel->setHorizontalHeaderItem(2,new QStandardItem(QObject::tr("性别")));studentModel->setHorizontalHeaderItem(3,new QStandardItem(QObject::tr("分数")));//将数据模型绑定到控件QTableView上ui->tableView->setModel(studentModel);//设置表格列的宽度,第0行--》默认为100ui->tableView->setColumnWidth(0,100);//添加数据信息studentModel->setItem(0,0,new QStandardItem("20220001"));studentModel->setItem(0,1,new QStandardItem("张三"));studentModel->setItem(0,2,new QStandardItem("男"));studentModel->setItem(0,3,new QStandardItem("750"));studentModel->setItem(1,0,new QStandardItem("20220002"));studentModel->setItem(1,1,new QStandardItem("李四"));studentModel->setItem(1,2,new QStandardItem("女"));studentModel->setItem(1,3,new QStandardItem("450"));studentModel->setItem(2,0,new QStandardItem("20220003"));studentModel->setItem(2,1,new QStandardItem("王五"));studentModel->setItem(2,2,new QStandardItem("男"));studentModel->setItem(2,3,new QStandardItem("666"));//设定表格不能编辑ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);//设定数据模型按照分数列进行排序-->降序studentModel->sort(3,Qt::DescendingOrder);}
4、Column View:列视图(不常用)
5、Undo View:撤销命令视图(不常用)