Qt第十一天 痛定思痛。 2022-04-08 09:22 250阅读 0赞 # QStringListModel的使用 # **采用QStringListModel作为数据模型,QListView组件作为视图组件** **演示了QStringListModel和QListView构成的Model/View结构编辑字符串列表的功能** **窗口左侧是对QStringListView的一些操作,右侧的QPlainTextEdit组件显示QStringListModel::stringList()的内容,以查看其是否与QListView内容一致** ## widget.h文件 ## #ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QStringListModel> namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0); ~Widget(); private slots: void on_pushButton_2_clicked(); void on_pushButton_3_clicked(); void on_pushButton_4_clicked(); void on_pushButton_5_clicked(); void on_pushButton_clicked(); void on_pushButton_7_clicked(); void on_pushButton_6_clicked(); void on_listView_clicked(const QModelIndex &index); private: Ui::Widget *ui; QStringListModel *theModel;//定义数据模型 }; #endif // WIDGET_H ## widget.cpp文件 ## #include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); //进行变量的创建,完成数据模型与界面视图组件的关联 QStringList theStrList; theStrList<<"北京"<<"南京"<<"西京"<<"东京"; theModel=new QStringListModel(this); theModel->setStringList(theStrList);//导入theStrList的内容 ui->listView->setModel(theModel);//设置数据模型 ui->listView->setEditTriggers(QAbstractItemView::DoubleClicked|QAbstractItemView::SelectedClicked);//设置编辑模式 //双击或选中后单击进入编辑模式 } Widget::~Widget() { delete ui; } void Widget::on_pushButton_2_clicked()//添加项 { theModel->insertRow(theModel->rowCount());//在最后一行之后再添加一行 QModelIndex index=theModel->index(theModel->rowCount()-1,0);//根据传递的行号、列号、父项的模型索引生成一个模型索引 theModel->setData(index,"new item",Qt::DisplayRole);//用于显示文字标题 ui->listView->setCurrentIndex(index); } void Widget::on_pushButton_3_clicked()//插入项 //在当前列表的前一行插入一行 { QModelIndex index=ui->listView->currentIndex();//获取当前项的模型索引 theModel->insertRow(index.row());//将模型索引转化为行数 //在这一行前插入新行 theModel->setData(index,"insert item",Qt::DisplayRole); ui->listView->setCurrentIndex(index); } void Widget::on_pushButton_4_clicked()//删除当前行 { QModelIndex index=ui->listView->currentIndex(); theModel->removeRow(index.row()); } void Widget::on_pushButton_5_clicked()//清除列表 { theModel->removeRows(0,theModel->rowCount()); //参数1开始删除的行号 //参数2删除的行数 } void Widget::on_pushButton_clicked()//恢复列表 { QStringList theStrList; theStrList<<"北京"<<"南京"<<"西京"<<"东京"; theModel=new QStringListModel(this); theModel->setStringList(theStrList);//导入theStrList的内容 ui->listView->setModel(theModel); } void Widget::on_pushButton_7_clicked()//显示数据模型的StringList { QStringList tmpList; tmpList=theModel->stringList(); ui->plainTextEdit->clear(); for(int i=0;i<tmpList.count();i++) { ui->plainTextEdit->appendPlainText(tmpList.at(i)); } } void Widget::on_pushButton_6_clicked()//清空文本 { ui->plainTextEdit->clear(); } void Widget::on_listView_clicked(const QModelIndex &index)//选择listView中的某项会显示行、列 { int row=index.row(); int col=index.column(); ui->label->setText(QString::asprintf("当前项的行:%d,列:%d",row,col)); } ## widget.ui文件 ## ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RoZVJvb2tpZTE_size_16_color_FFFFFF_t_70] ## 运行结果 ## ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RoZVJvb2tpZTE_size_16_color_FFFFFF_t_70 1] [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RoZVJvb2tpZTE_size_16_color_FFFFFF_t_70]: /images/20220407/c878fc453c894a388208f2acb879c836.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3RoZVJvb2tpZTE_size_16_color_FFFFFF_t_70 1]: /images/20220407/6109a20f490447d5bb14494db6a58e11.png
相关 QT第十天 QFileSystemModel 使用QFileSystemModel作为数据模型,QTreeView,QListView和QTableView为主要组件 在Tree Bertha 。/ 2022年04月11日 11:42/ 0 赞/ 309 阅读
相关 Qt第十六天 QPainter基本绘图 只有最基本的画图 widget.h ifndef WIDGET_H define WIDGET_H 待我称王封你为后i/ 2022年04月08日 13:24/ 0 赞/ 235 阅读
相关 Qt第十五天 自定义对话框及其调用 QWDialogSize的创建 qwdialogsize.h ifndef QWDIALOGSIZE_H define QW 以你之姓@/ 2022年04月08日 12:41/ 0 赞/ 274 阅读
相关 Qt第十二天 QStandardItemModel的使用 实现功能: 打开一个文本文件,该文件为二维数据文件,通过字符串处理获取表头和各行各列数据,导入到QStandardItem Bertha 。/ 2022年04月08日 10:15/ 0 赞/ 390 阅读
相关 Qt第十一天 QStringListModel的使用 采用QStringListModel作为数据模型,QListView组件作为视图组件 演示了QStringListModel和 痛定思痛。/ 2022年04月08日 09:22/ 0 赞/ 251 阅读
相关 Qt第十四天 标准对话框 QFileDialog文件对话框 QColorDialog颜色对话框 QFontDialog字体对话框 QInputDialog输入对话框 Q 野性酷女/ 2022年04月05日 12:44/ 0 赞/ 437 阅读
相关 Qt第十三天 自定义代理 \\基类为QItemDelegate, 必须实现4个函数 //自定义代理组件必须继承一下四个函数,函数的原型都是固定的 //创建编辑组件 QW た 入场券/ 2022年04月05日 07:09/ 0 赞/ 408 阅读
相关 Qt第十八天 Graphics View绘图程序实例 \\可以创建矩形,椭圆,圆,三角形,梯形,直线,文字等基本图形项 每个图形项可以被选择,拖动,放缩,旋转 图形项的前置和后 逃离我推掉我的手/ 2022年04月04日 11:47/ 0 赞/ 355 阅读
相关 Qt第十七天 QGraphicsView程序基本结构和功能实现 mainwindow.h ifndef MAINWINDOW_H define MAINWINDOW_ 快来打我*/ 2022年04月04日 09:18/ 0 赞/ 293 阅读
相关 Qt第十六天’ 坐标变换 坐标平移 坐标旋转 坐标缩放 状态的保存和恢复 widget.h ifndef WIDGET_H define WIDGET 快来打我*/ 2022年04月04日 03:07/ 0 赞/ 271 阅读
还没有评论,来说两句吧...