目录:
(一) Qt Model/View 的简单说明 、预定义模型
(二)使用预定义模型 QstringListModel例子
(三)使用预定义模型QDirModel的例子
(四)Qt实现自定义模型基于QAbstractTableModel
(五)Qt实现自定义模型基于QAbstractItemModel
(六) Qt实现自定义委托 QDelegate
使用预定义模型QDirModel的例子
Main.cpp
#include <QApplication>
#include "directoryviewer.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
DirectoryViewer directoryViewer;
directoryViewer.show();
return app.exec();
}
directoryviewer.h
#ifndef DIRECTORYVIEWER_H
#define DIRECTORYVIEWER_H
#include <QDialog>
class QDialogButtonBox;
class QDirModel;
class QTreeView;
class DirectoryViewer : public QDialog
{
Q_OBJECT
public:
DirectoryViewer(QWidget *parent = 0);
private slots:
void createDirectory();
void remove();
private:
QTreeView *treeView;
QDirModel *model;
QDialogButtonBox *buttonBox;
};
#endif
directoryviewer.cpp
#include <QtGui>
#include "directoryviewer.h"
DirectoryViewer::DirectoryViewer(QWidget *parent)
: QDialog(parent)
{
//创建一个目录模型
model = new QDirModel;
//可编辑
model->setReadOnly(false);
//初始排序属性 目录在前,然后文件
model->setSorting(QDir::DirsFirst | QDir::IgnoreCase | QDir::Name);
treeView = new QTreeView;
treeView->setModel(model);
treeView->header()->setStretchLastSection(true);
treeView->header()->setSortIndicator(0, Qt::AscendingOrder);
treeView->header()->setSortIndicatorShown(true);
treeView->header()->setClickable(true);
//当前目录的模型索引
QModelIndex index = model->index(QDir::currentPath());
//如果需要就打开它的父对象一直到根节点,并且调用scrollTo()滚动倒当前项,确保它是可见的
treeView->expand(index);
treeView->scrollTo(index);
//确保第一列足够宽,可以显示它所有的条目。
treeView->resizeColumnToContents(0);
buttonBox = new QDialogButtonBox(Qt::Horizontal);
QPushButton *mkdirButton = buttonBox->addButton(
tr("&Create Directory..."), QDialogButtonBox::ActionRole);
QPushButton *removeButton = buttonBox->addButton(tr("&Remove"),
QDialogButtonBox::ActionRole);
buttonBox->addButton(tr("&Quit"), QDialogButtonBox::AcceptRole);
connect(mkdirButton, SIGNAL(clicked()),
this, SLOT(createDirectory()));
connect(removeButton, SIGNAL(clicked()), this, SLOT(remove()));
connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(treeView);
mainLayout->addWidget(buttonBox);
setLayout(mainLayout);
setWindowTitle(tr("Directory Viewer"));
}
void DirectoryViewer::createDirectory()
{
//获取当前目录 模型索引
QModelIndex index = treeView->currentIndex();
if (!index.isValid())
return;
//获取创建目录名
QString dirName = QInputDialog::getText(this,
tr("Create Directory"),
tr("Directory name"));
//创建子目录 mkdir(模型索引,目录名)
if (!dirName.isEmpty()) {
if (!model->mkdir(index, dirName).isValid())
QMessageBox::information(this, tr("Create Directory"),
tr("Failed to create the directory"));
}
}
void DirectoryViewer::remove()
{
QModelIndex index = treeView->currentIndex();
if (!index.isValid())
return;
//删除目录 rmdir(模型索引)
bool ok;
if (model->fileInfo(index).isDir()) {
ok = model->rmdir(index);
} else {
ok = model->remove(index);
}
if (!ok)
QMessageBox::information(this, tr("Remove"),
tr("Failed to remove %1").arg(model->fileName(index)));
}
分享到:
相关推荐
【标题】中的“讯飞星火模型代码例子”反复提及,显然强调了这是关于科大讯飞公司的“星火”模型的代码示例。科大讯飞是一家知名的中国人工智能公司,其在语音识别、自然语言处理等领域有深厚的技术积累。星火模型...
"Qt4_使用预定义模型"这个主题表明我们将深入探讨Qt4框架中的数据模型系统,特别是预定义模型的使用方法。预定义模型是Qt为简化数据绑定和视图呈现提供的一系列内置类,它们极大地简化了开发者处理数据和界面之间的...
三维模型库的建筑信息化模型(BIM)的英文全称是Building Information Modeling,是一个完备的信息模型,能够将工程项目在全生命周期中各个不同阶段的工程信息、过程和资源集成在一个模型中,方便的被工程各参与方...
H5div盒子模型例子H5div盒子模型例子H5div盒子模型例子H5div盒子模型例子
【初音MMD模型——三妈式Miku】 初音未来(Miku Hatsune)是全球知名的虚拟歌手,她在音乐创作领域拥有大量的粉丝。Miku的3D模型,特别是Miku Miku Dance(MMD)模型,是许多爱好者进行动画制作、舞蹈模拟和创意...
本文将深入探讨IOCP完成端口模型,并通过具体例子来阐述其工作原理和实现方法。 IOCP是Windows操作系统提供的一种高度优化的异步I/O模型,特别适用于需要处理大量并发连接的服务,如Web服务器或游戏服务器。相比于...
在这个例子中,我们创建了一个`GeneratorUNet`类的实例,这是一个生成对抗网络(GAN)中使用的生成器模型。 效果展示部分并没有具体展现,不过可以想象,通过这种方式可视化出来的模型,将是一个节点清晰、连接明确...
### 使用SketchUp为OsgEarth制作三维城市模型并准确添加到地图中的方法 #### 工具与数据准备 为了能够高效地使用SketchUp为OsgEarth制作三维城市模型,并将其准确地添加到地图中,首先需要准备好必要的工具与数据...
基于Spark SQL+Spark MLlib+Spark Streaming+隐语义模型(LFM)+实际项目经验的个性化电影推荐系统源码+项目说明.zip 基于Spark SQL+Spark MLlib+Spark+隐语义模型(LFM)+实际项目经验的个性化电影推荐系统源码.zip ...
《使用德州仪器 (TI) SPICE 模型在 PSPICE 中进行模拟仿真》 随着电子技术的不断发展,模拟电路的设计和分析变得越来越复杂。PSPICE(由Microsim公司开发,现为Cadence Design Systems的一部分)作为一款强大的电路...
在这个具体的“数学建模资金分配模型例子”中,我们看到一个工厂面临着一笔企业留成利润的分配决策,需要在发放奖金给职工、扩建集体福利设施以及引进新技术和新设备之间做出选择。 在分析问题时,首先明确了所有...
车辆三自由度模型,有一定参考价值
【三维城市模型与gltf格式详解】 在现代数字化领域,三维城市模型是地理信息系统(GIS)和虚拟现实(VR)应用中的重要组成部分。它们能够真实地再现城市的建筑、道路、地形等元素,为城市规划、环境分析、灾害模拟...
总结来说,"OSG例子程序 flt 模型文件转换"涉及到使用OpenSceneGraph库处理和渲染FLT格式的3D模型,如tank model和carrier model。通过加载、转换、组合模型以及利用OSG提供的各种功能,可以创建出丰富的三维交互式...
在这个例子中,我们创建了一个立方体模型,通过`MatrixTransform`应用了一个平移变换将其放置在世界坐标系的特定位置。然后,我们分别获取了模型的局部和世界坐标系下的包围盒,并打印出来。最后,使用`osgViewer::...
《数学模型》是一本系统阐述数学建模方法和应用的教材,由高教出版社在2003年出版了第三版。本书的作者姜启原教授在其著作中深入浅出地介绍了数学模型的建立和应用过程,以及数学模型的种类和特点,旨在培养读者的...
【基于Matlab的三维地球模型】是一个利用MATLAB强大的图形处理能力和数学计算功能构建的可视化应用。这个模型允许用户在三维空间中观察地球,并且能够动态地旋转地球模型,同时还可以模拟卫星在其周围的运动轨迹,为...
三维模型在现代数字媒体、游戏开发、建筑可视化和虚拟现实等领域中扮演着至关重要的角色。在给定的压缩包文件中,我们有三种不同格式的三维模型:`city.gltf`、`city.mtl` 和 `city.obj`。下面将详细介绍这三个文件...
详细的描述BA网络模型的构建,此程序基于matlab软件,为初学者提供一些指导