QStringListModel的使用
主要为 :添加、插入、修改、删除、清空等操作
例子:本例子中QListView 没有做任何处理,只是拖放至ui文件,设置了布局
MainWindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QStringListModel>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void on_btnRecovery_clicked();
void on_listView_clicked(const QModelIndex &index);
void on_btnClearText_clicked();
void on_btnShowModel_clicked();
void on_btnAdd_clicked();
void on_btnInsert_clicked();
void on_btnDel_clicked();
void on_btnClear_clicked();
private:
Ui::MainWindow *ui;
QStringListModel *model;
};
#endif // MAINWINDOW_H
MainWindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
model = new QStringListModel(this);
QStringList list;
list << "1" << "2" << "3";
model->setStringList(list); //为model设置数据
ui->listView->setModel(model);//为界面绑定model
ui->listView->setEditTriggers(QAbstractItemView::DoubleClicked | QAbstractItemView::SelectedClicked);//设置触发编辑的操作
}
MainWindow::~MainWindow()
{
delete ui;
}
/**
* @brief MainWindow::on_btnRecovery_clicked 恢复
*/
void MainWindow::on_btnRecovery_clicked()
{
QStringList list;
list << "1" << "2" << "3";
model->setStringList(list);
}
/**
* @brief MainWindow::on_listView_clicked 选择之后,为状态栏赋值
* @param index
*/
void MainWindow::on_listView_clicked(const QModelIndex &index)
{
QString str = QString("第 %1 行,第 %2 列").arg(index.row() + 1).arg(index.column() + 1);
ui->statusbar->showMessage(str);
}
/**
* @brief MainWindow::on_btnClearText_clicked 文本框清空
*/
void MainWindow::on_btnClearText_clicked()
{
ui->plainTextEdit->clear();
}
/**
* @brief MainWindow::on_btnShowModel_clicked 显示消息模型中的QStringList
*/
void MainWindow::on_btnShowModel_clicked()
{
ui->plainTextEdit->clear();
foreach (QString item, model->stringList()) {
ui->plainTextEdit->appendPlainText(item);
}
}
/**
* @brief MainWindow::on_btnAdd_clicked 最后一行添加
*/
void MainWindow::on_btnAdd_clicked()
{
model->insertRow(model->rowCount());
QModelIndex index = model->index(model->rowCount() - 1, 0);
model->setData(index, "new item", Qt::DisplayRole);
ui->listView->setCurrentIndex(index);
QString str = QString("第 %1 行,第 %2 列").arg(index.row() + 1).arg(index.column() + 1);
ui->statusbar->showMessage(str);
}
/**
* @brief MainWindow::on_btnInsert_clicked 指定行插入
*/
void MainWindow::on_btnInsert_clicked()
{
QModelIndex index = ui->listView->currentIndex();
model->insertRow(index.row());
model->setData(index, "new item", Qt::DisplayRole);
}
/**
* @brief MainWindow::on_btnDel_clicked 删除一行
*/
void MainWindow::on_btnDel_clicked()
{
QModelIndex index = ui->listView->currentIndex();
model->removeRow(index.row());
}
/**
* @brief MainWindow::on_btnClear_clicked 清空model
*/
void MainWindow::on_btnClear_clicked()
{
model->removeRows(0, model->rowCount());
}
界面

QStringListModel的使用的更多相关文章
- Qt 学习之路:QStringListModel
上一章我们已经了解到有关 list.table 和 tree 三个最常用的视图类的便捷类的使用.前面也提到过,由于这些类仅仅是提供方便,功能.实现自然不如真正的 model/view 强大.从本章起, ...
- qt model/view 架构自定义模型之QStringListModel
# -*- coding: utf-8 -*- # python:2.x #QStringListModel #QStringListModel 是最简单的模型类,具备向视图提供字符串数据的能力. # ...
- (二)使用预定义模型 QStringListModel例子
使用预定义模型 QStringListModel例子 源代码如下 Main.cpp #include <QApplication> #include "teamleadersdi ...
- Qt 学习之路 2(43):QStringListModel
Qt 学习之路 2(43):QStringListModel 豆子 2013年2月13日 Qt 学习之路 2 38条评论 上一章我们已经了解到有关 list.table 和 tree 三个最常用的视图 ...
- QT QStringListModel 示例代码
1. QStringListModel , 实现 插入 删除 编辑 list,支持鼠标双击编辑. 2. dialog.h #ifndef DIALOG_H #define DIALOG_H #inc ...
- 5.listview(QStringList QStringListModel)
UI mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> #include < ...
- PyQt(Python+Qt)学习随笔:model/view架构中的QStringListModel
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.QStringListModel介绍 QStringListModel是Qt提供的一个已经实现Q ...
- QT数据库使用案列【联系人】-- 使用sqlite和QStringListModel
[关于如何打包自己开发的程序为安装包,可以参考http://www.cnblogs.com/yuliyang/p/4242179.html] [简要功能介绍] 使用sqlite数据库和Qt搭建界面,实 ...
- 基于trie树的具有联想功能的文本编辑器
之前的软件设计与开发实践课程中,自己构思的大作业题目.做的具有核心功能,但是还欠缺边边角角的小功能和持久化数据结构,先放出来,有机会一点点改.github:https://github.com/chu ...
- Qt Undo Framework Demo
Qt Undo Framework Demo eryar@163.com Abstract. Qt’s Undo Framework is an implementation of the Comma ...
随机推荐
- 在 ASP.NET Core 中进行打包 (Bundling) 和紧缩 (Minification)
在 ASP.NET Core 中进行打包 (Bundling) 和紧缩 (Minification) Bundler & Minifier for Visual Studio 2019 Bun ...
- 【金TECH频道】汇聚多元化超级算力,看见更好的“源启”
越来越多的金融机构开始利用大数据和AI技术,提升信贷业务的效率,利用隐私计算打造开放式金融,让客户随时随地获得金融服务:气象领域,高精度计算让我们能准确地预测恶劣的天气,医疗大数据让部分癌症的治愈成为 ...
- django介绍及基本使用
目录 一.python主流web框架 二.django简介 1.版本问题 2.运行django注意事项 三.django基本使用 1.下载模块 2.验证 3.常见命令 4.pycharm自动创建dja ...
- AOP中动态代理详解
动态代理概述 什么是代理 代理模式(Proxy pattern): 为另一个对象提供一个替身或占位符以控制对这个对象的访问 什么是动态代理? 动态代理就是,在程序运行期,创建目标对象的代理对象,并对目 ...
- metasploit模块
模块类型 辅助模块(Auxiliary) 渗透攻击模块(Exploits) 后渗透攻击模块(Post) 攻击载荷模块(Payloads) 空指令模块(Nops) 编码器模块(Encoders) 后渗透 ...
- 【C#】【类设计器】【类图】类图安装与简单使用
安装 使用 Ctrl + Shift + A 或者按下图操作
- Qt编写地图综合应用21-路径规划
一.前言 近期重新将这个地图综合应用进行大幅度的改进更新升级,包括使用示例也做了非常多的改进和调整,其中就包括路径规划功能,之前只是调用了百度地图的JS交互接口,根据起始点坐标经纬度和结束点坐标经纬度 ...
- Python 问题汇总
一. Python 环境问题 使用pytest 在terminal中执行脚本调用python3.9, 而使用pycharm 的virtualenv 执行脚本调用的是python3.10, 由于环境不一 ...
- 2021 年万圣节 Github 彩蛋
记录每年 Github 万圣节彩蛋,也记录有来项目成长历程. 2021 万圣节彩蛋 2020 万圣节彩蛋
- CDS标准视图:维护通知原因数据 I_MaintNotificationCauseData
视图名称:维护通知原因数据 I_MaintNotificationCauseData 视图类型:基础 视图代码: 点击查看代码 @AbapCatalog.sqlViewName: 'INOTIFCAU ...