QStringListModel
来源:互联网 发布:搞怪专家软件下载 编辑:程序博客网 时间:2024/05/16 12:47
转载自:
QStringListModel是最简单的模型类,具备向视图提供字符串数据的能力。QStringListModel 是一个可编辑的模型,可以为组件提供一系列字符串作为数据。我们可以将其看作是封装了 QStringList 的模型。
QStringList 是一种很常用的数据类型,实际上是一个字符串列表(也就是 QList< QString>)。既然是列表,它也就是线性的数据结构,因此,QStringListModel 很多时候都会作为 QListView 或者 QComboBox 这种只有一列的视图组件的数据模型。
示例:
#include "widget.h"#include "ui_widget.h"#include <qDebug>#include <QMessageBox>Widget::Widget(QWidget *parent) : QWidget(parent){ QStringList data; data << "Letter A" << "Letter B" << "Letter C"; model = new QStringListModel(this); model->setStringList(data); listView = new QListView(this); listView->setModel(model); QHBoxLayout *btnLayout = new QHBoxLayout; QPushButton *insertBtn = new QPushButton(tr("insert"), this); connect(insertBtn, SIGNAL(clicked()), this, SLOT(on_insertData())); QPushButton *delBtn = new QPushButton(tr("Delete"), this); connect(delBtn, SIGNAL(clicked()), this, SLOT(on_deleteData())); QPushButton *showBtn = new QPushButton(tr("Show"), this); connect(showBtn, SIGNAL(clicked()), this, SLOT(on_showData())); btnLayout->addWidget(insertBtn); btnLayout->addWidget(delBtn); btnLayout->addWidget(showBtn); QVBoxLayout *mainLayout = new QVBoxLayout(this); mainLayout->addWidget(listView); mainLayout->addLayout(btnLayout); setLayout(mainLayout);}void Widget::on_insertData(){ bool isOK; QString text = QInputDialog::getText(this,"Input", "Plase input", QLineEdit::Normal, "You are inserting", &isOK); //选定行之后插入 if(isOK){ int row = listView->currentIndex().row(); qDebug()<<row; model->insertRows(row+1,1); QModelIndex index = model->index(row+1); model->setData(index,text); listView->setCurrentIndex(index); listView->edit(index); } //选定行之前插入// if(isOK){// QModelIndex currIndex = listView->currentIndex();// model->insertRows(currIndex.row(),1);// model->setData(currIndex,text);// listView->edit(currIndex);// }}void Widget::on_deleteData(){ if(model->rowCount() > 0){ model->removeRow(listView->currentIndex().row()); }}void Widget::on_showData(){ QStringList data = model->stringList(); QString str; foreach(QString s,data) str += s; QMessageBox::information(this,"Outpot",str);}Widget::~Widget(){}
从示例中可以看到,几乎所有操作都是针对模型的,也就是说,我们直接对数据进行操作,当模型检测到数据发生了变化,会立刻通知视图进行刷新。这样一来,就可以把精力集中到对数据的操作上,而不用担心视图的同步显示问题。这正是 model/view 模型所带来的一个便捷之处。
0 0
- QStringListModel
- QStringListModel
- QStringListModel--42
- QStringListModel的简单使用
- QT QStringListModel 示例代码
- QStringListModel的简单使用
- MVC设计模式-QStringListModel
- 自学QT之QStringListModel
- Qt之QStringListModel
- QT5学习 QStringListModel
- Qt学习之路(42): QStringListModel
- model-view模型之QListView和QStringListModel
- 使用预定义模型 QStringListModel+QStringlist例子
- Qt学习之路(42): QStringListModel
- (二)使用预定义模型 QStringListModel例子
- Qt学习之路(42): QStringListModel
- model-view模型之QListView和QStringListModel .
- 使用预定义模型 QStringListModel例子
- 【Unity问题】Int类型除法运算为什么归零
- WebView点击视频全屏按钮界面消失
- 【Git】Git教程最精简笔记
- NodeJs模块实例03_util、even和path
- Logging 级别
- QStringListModel
- 抽屉效果实现
- ctorrent-dnh3.3.2, 我想知道他是否具有HDT功能吗
- final修饰变量 与Stastic修饰的变量
- CentOS标准目录结构
- 操作缓冲池
- 浅析VO、DTO、DO、PO的概念、区别和用处
- oracle执行update时卡死问题的解决办法
- android恢复出厂设置的流程