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 ...
随机推荐
- 开源个人实用XML翻译小工具,实现
前言 IntelliSense 是一种代码完成辅助工具,可以在不同的集成开发环境 (IDE) 中使用,在开发 .NET 项目时,SDK 仅包含英语版本的 IntelliSense 文件. 对英语不好的 ...
- 双语对照的 PDF 翻译工具「GitHub 热点速览」
在 OpenAI 举办的「12天12场」发布会上,ChatGPT 的多项新功能正式亮相,包括 GPT-o1 正式版和 ChatGPT Pro(200 美元/月).强化微调(Reinforcement ...
- 国外著名交易策略:R-Breaker模型设计原理(转载)
R-Breaker是一种短线日内交易策略,它结合了趋势和反转两种交易方式. 交易系统的基本原理如下: 1.根据前一个交易日的收盘价.最高价和最低价数据通过一定方式计算出六个价位,从大到小依次为:突破买 ...
- [转]CLion 2019去掉灰色参数提示(parameters hints)
众所周知,clion是一个很好用的c plus plus IDE,刚装好的clion默认的设置多少有一些不符合口味的地方,在查看代码或者敲代码的时候看到如下这样的灰色提示,我是有点受不了的: 之前用的 ...
- 在 Vercel 部署随机图 API
在本文中,将详细介绍如何在 Vercel 平台上部署一个具有分类功能的随机图片 API.通过这个 API,用户可以根据不同的分类获取随机图片链接,并且还可以从所有分类中随机获取一张图片. 项目结构 首 ...
- Spring基础 02 | JdbcTemplate
JdbcTemplate Spring对Jdbc的Api简单封装 开发步骤 1.导入Spring-jdbc.spring-tx坐标 2.创建数据库表和实例 3.创建jdbcTemplate对象 4.执 ...
- 记录实现倒计时的方法,配合按钮的disabled
记录一个自己实现倒计时的方法,现在可以网上有很多插件,自己实现记录一下 // 倒计时 countDown() { this.disabled = true let number = 60 this.c ...
- Solution Set - “伸手向着拉格朗日点作别”
目录 0.「UR #9」「UOJ #133」电路手动分析 1.「UR #9」「UOJ #134」App 管理器 2.「UR #10」「UOJ #152」汉诺塔 3.「UNR #2」「UOJ #312」 ...
- Hutool 实现非对称加密(RSA)
目录 思路 生成RAS密钥 消息公钥加密.私钥解密 代码Demo 生成 A 的密钥 生成 B 的密钥 A 发送消息给 B B 解密 A 消息 对称加密中,我们只需要一个密钥,通信双方同时持有.而非对称 ...
- 第一个helloworld,有点小兴奋
@SpringBootApplication package com.ch.boot; import org.springframework.boot.SpringApplication; imp ...