1.List View:清单视图
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QListView>
//字符串列表模型
#include <QStringListModel>
#include <QMessageBox>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private:
Ui::Widget *ui;
private:
QListView * listview1;
private slots:
void SlotClickedFunc(const QModelIndex &index);
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
resize(450,250);
//第一步:创建QListView类对象
listview1 = new QListView(this);
//设置控件的显示位置和大小
listview1->setGeometry(20,20,140,160);
//第二步:创建数据显示至清单视图
QStringList qlist;//创建数据显示至清单视图
qlist.append("运动类:篮球,足球");
qlist.append("娱乐类:电影,音乐");
qlist.append("游戏类:五子棋,象棋");
qlist.append("旅游类:国内,国外");
//第三步:利用数据列表创建数据显示模型进行实现
QStringListModel *listmode = new QStringListModel(qlist);
//
listview1->setModel(listmode);
connect(listview1,SIGNAL(clicked(const QModelIndex)),this,SLOT(SlotClickedFunc(const QModelIndex )));
}
Widget::~Widget()
{
delete ui;
}
void Widget::SlotClickedFunc(const QModelIndex &index)
{
QMessageBox::information(NULL,"兴趣爱好","你选择的类型为:\n"+index.data().toString());
}
2.Tree View:树视图
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QStandardItemModel>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
public:
void InitTreeViewFUNC();//初始化树控件视图
QStandardItemModel *sItemModel;
};
#endif // MAINWINDOW_H
#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()
{
//1.构造Model
sItemModel = new QStandardItemModel(ui->treeView);
sItemModel->setHorizontalHeaderLabels(QStringList()<<QStringLiteral("编号")<<QStringLiteral("初中部 | 高中部 "));
//创建一级节点,将它加入到sItemModel
QList<QStandardItem*> item11;
QStandardItem * itme1 = new QStandardItem(QString::number(1));
QStandardItem * itme2 = new QStandardItem("初中部");
item11.append(itme1);
item11.append(itme2);
sItemModel->appendRow(item11);//第一个一级节点
//二级节点,添加到第一个一级节点
QList<QStandardItem*> item112;
QStandardItem * itme1121 = new QStandardItem(QString::number(2));
QStandardItem * itme1122 = new QStandardItem("一年级");
item112.append(itme1121);
item112.append(itme1122);
itme1->appendRow(item112);
//三级节点,添加到第一个二级节点
QList<QStandardItem*> item1231;
QStandardItem * item12311 = new QStandardItem(QString::number(3));
QStandardItem * item12312 = new QStandardItem("一班");
item1231.append(item12311);
item1231.append(item12312);
itme1121->appendRow(item1231);
QList<QStandardItem*> item1232;
QStandardItem * item12321 = new QStandardItem(QString::number(3));
QStandardItem * item12322 = new QStandardItem("二班");
item1232.append(item12321);
item1232.append(item12322);
itme1121->appendRow(item1232);
QList<QStandardItem*> item1233;
QStandardItem * item12331 = new QStandardItem(QString::number(3));
QStandardItem * item12332 = new QStandardItem("三班");
item1233.append(item12331);
item1233.append(item12332);
itme1121->appendRow(item1233);
//第二个一级节点
QList<QStandardItem*> item12;
QStandardItem * itme3= new QStandardItem(QString::number(2));
QStandardItem * itme4 = new QStandardItem("高中部");
item12.append(itme3);
item12.append(itme4);
sItemModel->appendRow(item12);
//2.给QTreeView控件应用model;
ui->treeView->setModel(sItemModel);
}