目录:
(一) Qt Model/View 的简单说明 、预定义模型
(二)使用预定义模型 QstringListModel例子
(三)使用预定义模型QDirModel的例子
(四)Qt实现自定义模型基于QAbstractTableModel
(五)Qt实现自定义模型基于QAbstractItemModel
(六) Qt实现自定义委托 QDelegate
使用预定义模型 QStringListModel例子
源代码如下
Main.cpp
#include <QApplication>
#include "teamleadersdialog.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
//字符串数组
QStringList leaders;
leaders << "Stooge Viller" << "Littleface" << "B-B Eyes"
<< "Pruneface" << "Mrs. Pruneface" << "The Brow"
<< "Vitamin Flintheart" << "Flattop Sr." << "Shakey"
<< "Breathless Mahoney" << "Mumbles" << "Shoulders"
<< "Sketch Paree";
//对话框
TeamLeadersDialog dialog(leaders);
dialog.show();
return app.exec();
}
teamleadersdialog.h
#ifndef TEAMLEADERSDIALOG_H
#define TEAMLEADERSDIALOG_H
#include <QDialog>
class QDialogButtonBox;
class QListView;
class QStringListModel;
class TeamLeadersDialog : public QDialog
{
Q_OBJECT
public:
//构造函数
TeamLeadersDialog(const QStringList &leaders, QWidget *parent = 0);
QStringList leaders() const;
private slots:
void insert();
void del();
private:
QListView *listView;
QDialogButtonBox *buttonBox;
QStringListModel *model;
};
#endif
teamleadersdialog.cpp
#include <QtGui>
#include "teamleadersdialog.h"
TeamLeadersDialog::TeamLeadersDialog(const QStringList &leaders,
QWidget *parent)
: QDialog(parent)
{
//创建并组装一个QStringListModel
model = new QStringListModel(this);
model->setStringList(leaders);
//创建一个QListView
listView = new QListView;
//设置模型
listView->setModel(model);
//设置QListView编辑触发器:通过开始输入或者双击进入编辑字符串的状态
listView->setEditTriggers(QAbstractItemView::AnyKeyPressed
| QAbstractItemView::DoubleClicked);
//
buttonBox = new QDialogButtonBox();
QPushButton *insertButton = buttonBox->addButton(tr("&Insert"),
QDialogButtonBox::ActionRole);
QPushButton *deleteButton = buttonBox->addButton(tr("&Delete"),
QDialogButtonBox::ActionRole);
buttonBox->addButton(QDialogButtonBox::Ok);
buttonBox->addButton(QDialogButtonBox::Cancel);
//信号槽绑定插入、删除按钮
connect(insertButton, SIGNAL(clicked()), this, SLOT(insert()));
connect(deleteButton, SIGNAL(clicked()), this, SLOT(del()));
//按钮盒的ok和Cancel事件
connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
//界面竖直布局listView和buttonBox
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(listView);
mainLayout->addWidget(buttonBox);
//设置当前窗口的布局为mainLayout
setLayout(mainLayout);
setWindowTitle(tr("Team Leaders"));
}
//获取当前模型中的内容
QStringList TeamLeadersDialog::leaders() const
{
return model->stringList();
}
void TeamLeadersDialog::insert()
{
//从列表视图得到当前项的行数
int row = listView->currentIndex().row();
//在模型中插入一个新行,并且模型会自动更新列表视图
model->insertRows(row, 1);
//获取当前行在模型中的"模型索引"
QModelIndex index = model->index(row);
//设置刚刚插入的空白行为列表视图的当前索引
listView->setCurrentIndex(index);
//设置列表视图在当前行进入编辑状态
listView->edit(index);
}
void TeamLeadersDialog::del()
{
//从目前行开始,共删除1行model数据,并自动更新列表视图
model->removeRows(listView->currentIndex().row(), 1);
}
分享到:
相关推荐
讯飞星火模型代码例子讯飞星火模型代码例子讯飞星火模型代码例子讯飞星火模型代码例子讯飞星火模型代码例子讯飞星火模型代码例子
spark隐语义模型推荐,代码实现,Python来实现
linux设备模型代码例子。自己编写的,还不错的哦。
H5div盒子模型例子H5div盒子模型例子H5div盒子模型例子H5div盒子模型例子
基于隐语义模型的学生选课推荐算法.pdf
数学建模中随机模型的课件例子等,包括统计检验,聚类分析,主成分分析,还有一个实例
使用MATLAB实现二维云模型,云标尺示意图,给出二维云模型6个参数EX,Ey,Enx,Eny,Hex,Hey,直接打开MATLAB软件加载运行
实例samp5_2采用QStringListModel作为数据模型,QListView组件作为视图组件,演示了QStringListModel和QListView构成Model/View结构编辑字符串列表的功能, 程序运行界面窗口左侧是对QStrmgListModel的一些操作,...
select 网络模型的使用例子
本资源是《C++中的单例模式及按需释放模型》系列博文的改进例子,文章地址为http://blog.csdn.net/gogogo/article/details/7041907,其中提到了如何在C++正确使用单例模式,并讲解了使用辅助类实现可以按需释放的...
基于Spark SQL+Spark MLlib+Spark Streaming+隐语义模型(LFM)+实际项目经验的个性化电影推荐系统源码+项目说明.zip 基于Spark SQL+Spark MLlib+Spark+隐语义模型(LFM)+实际项目经验的个性化电影推荐系统源码.zip ...
建立MATLAB两自由度模型,并且对不同质量经行对比,并生成对比图
很简单的一个例子,还提供了两个OSG模型文件,能直接打开,可以看看模型是怎样移动的
windows socket网络编程之iocp完成端口模型的例子
水环境预测软件,水质预测模型,包含河流、湖库的一维水质模型、二维水质模型。内置各种模型公式和解释。针对环境影响评价、环评预测、饮用水水源保护区划分预测具有很好的帮助。
.net一个简单的MVC模型例子,可以研究下。
http://blog.csdn.net/infoworld/article/details/43935853 项目代码
根据汽车理论教材中的汽车二自由度微分方程建立的simulink模型。完美无缺。原创原创。 根据汽车理论教材中的汽车二自由度微分方程建立的simulink模型。完美无缺。原创原创。
使用opengl编写的测试模型视图矩阵的例子,可以通过在界面上调节参数非常形象地理解模型视图变换的结果是怎么样的。