概述
QT5.9 c++ 第5章,主要讲解了 Model/View 结构
本章的三个例子,分别使用了 QFileSystemModel、 QStirngListModel 、QStandardItemModel
对应的继承结构如下图:
本文先学习的是第一个模型,QFileSystemModel 模型,也是有关计算机文件系统的数据模型。
哎,话不多说了,干就完了。
首先是界面的布局部分,直接上图:
对应的ui布局的图属性:
话不多少,上代码部分,本例子基于 QWainWindow 使用QFileSystemModel 模型,当然在mainWindow.h首先添加对应的
头文件。
#include <QFileSystemModel>
在主窗口添加变量,在ui界面listView点击右键,转到槽,选择clicked(QModelIndex)
class MainWindow : public QMainWindow
{
Q_OBJECT
private:
QFileSystemModel *mode;//定义数据模型变量
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_listView_clicked(const QModelIndex &index);
private:
Ui::MainWindow *ui;
};
在主构造函数中对函数初始化,代码如下边。
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
mode = new QFileSystemModel(this); //QFileSystemModel提供单独线程,推荐使用
mode->setRootPath(QDir::currentPath()); //设置根目录
ui->treeView->setModel(mode); //设置数据模型
ui->listView->setModel(mode); //设置数据模型
ui->tableView->setModel(mode); //设置数据模型
//信号与槽关联,treeView单击时,其目录设置为listView和tableView的根节点
connect(ui->treeView,SIGNAL(clicked(QModelIndex)),
ui->listView,SLOT(setRootIndex(QModelIndex)));
connect(ui->treeView,SIGNAL(clicked(QModelIndex)),
ui->tableView,SLOT(setRootIndex(QModelIndex)));
//这样就可以啦,是不是很简单
}
槽函数代码为:
void MainWindow::on_listView_clicked(const QModelIndex &index)
{
ui->chkIsDir->setChecked(mode->isDir(index));
ui->LabPath->setText(mode->filePath(index));
ui->LabType->setText(mode->type(index));
ui->LabFileName->setText(mode->fileName(index));
int sz =int( mode->size(index)/1024);
if(sz<1024)
ui->LabFileSize->setText(QString("%1 kb").arg(sz));
else
ui->LabFileSize->setText(QString::asprintf("%.1f MB ",sz/1024.0));
}
这个例子很简单也是我第一次写博客,分享下学习的心得,之前用的是MFC 或者win32 写遍历系统文件的程序,要繁琐很多,QT例子中,只要你定义了一个QFileSystemModel变量 ,把对应的界面
mode = new QFileSystemModel(this); //QFileSystemModel提供单独线程,推荐使用
mode->setRootPath(QDir::currentPath()); //设置根目录
ui->treeView->setModel(mode); //设置数据模型
ui->listView->setModel(mode); //设置数据模型
ui->tableView->setModel(mode); //设置数据模型
设置进去,界面选择文件的同时,mode对应遍历。
如果需要例子与对应的电子书籍,请可以联系我。QQ:365054851 无关人员请勿扰。
希望与大家一起进步。
例子我已经上传。希望大家多多点赞。
最后
以上就是任性皮皮虾为你收集整理的学习《QT5.9 c++ 开发指南》第5章学习笔记1的全部内容,希望文章能够帮你解决学习《QT5.9 c++ 开发指南》第5章学习笔记1所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复