首页 > 编程知识 正文

qt之qlist删除元素,qt的listview控件如何使用

时间:2023-05-03 21:26:58 阅读:18529 作者:607

Qt的QListView的使用

QListView可以用来以列表的形式展示数据,在Qt中使用model/View结构来管理数据与视图的关系,model负责数据的存取,数据的交互通过delegate来实现。

QListView主要应用对象是展示的数据是同级别的数据。QTreeView可以展示同级别也可以展示多节点。

mainwindow.h文件#ifndef MAINWINDOW_H#define MAINWINDOW_H#include <QMainWindow>#include "ui_mainwindow.h"#include <QStandardItemModel>#include <QObjectUserData>#include <QModelIndex>#include <QMetaType>#include <QStringListModel>#include <QDebug>class Mydate{public: virtual QString id() const { return QStringLiteral ( "transparency" );} virtual QString name() const { return QStringLiteral ( "opacity slider" ); }};namespace Ui {class MainWindow;}class MainWindow : public QMainWindow, public Ui::MainWindow{ Q_OBJECTpublic: explicit MainWindow(ssdxhdparent = 0); drddw();private: 传统的航空modelAvailable; 传统的航空modelUsed; QStringListModel* m_model; void initData();private slots: void on_mBtnAdd_clicked(); void on_mBtnRemove_clicked();private: Ui::MainWindow *ui;};#endif // MAINWINDOW_H

mainwindow.cpp文件

#include "ui_mainwindow.h"#include "mainwindow.h"#include <QStringListModel>#include <QSortFilterProxyModel>#include <QStringList>MainWindow::MainWindow(ssdxhdparent) : QMainWindow(parent), ui(new Ui::MainWindow){ ui->setupUi(this);/***QStringListModel模型***/// QStringList stringlist,stringlist_2;// stringlist<<"111"<<"222"<<"333";// stringlist_2<<"444"<<"555"<<"666";// QStringListModel *model = new QStringListModel(stringlist);// QStringListModel *model_2 = new QStringListModel(stringlist_2);// ui->mListAvailable->setModel(model);// ui->mListUsed->setModel(model_2);/***QStandardItemModel模型***/ initData();//模型设置 Mydate *provider = new Mydate; ui->mListAvailable->setModel( modelAvailable ); ui->mListUsed->setModel( modelUsed ); ui->mListAvailable->setAlternatingRowColors(true)/***添加模型数据***/ if( 传统的航空model = qobject_cast<传统的航空>(ui->mListAvailable->model() ) ) { QStandardItem *item = new QStandardItem( provider->name() ); item->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable ); item->setData( provider->id(), Qt::UserRole + 1); model->appendRow( item ); QStandardItem *item_1 = new QStandardItem( "provider->name" ); item_1->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable ); item_1->setData( "cxzcxzcz", Qt::UserRole + 1); model->appendRow( item_1 ); } if( 传统的航空model = qobject_cast<传统的航空>(ui->mListUsed->model() ) ) { QStandardItem *item = new QStandardItem( provider->name() ); item->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable ); item->setData( provider->id(), Qt::UserRole + 1); model->appendRow( item ); } int row = ui->mListAvailable->model()->rowCount();; int row1 = ui->mListUsed->model()->rowCount();; qDebug()<<row<<row1;}MainWindow::drddw(){ delete ui;}void MainWindow::initData(){ modelAvailable = new QStandardItemModel(); modelUsed = new QStandardItemModel();// Mydate *provider = new Mydate;显示图元设置// QStandardItem *item = new QStandardItem();// item->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable );// item->setData( provider->id(), Qt::UserRole);//单一存取// item->setData( provider, Qt::UserRole + 1 );//整体存取 X// modelAvailable->appendRow( item );// modelUsed->appendRow( item );}void MainWindow::on_mBtnAdd_clicked(){ QString providerId = ui->mListAvailable->model()->data( ui->mListAvailable->currentIndex(), Qt::UserRole + 1).toString(); Mydate *provider = new Mydate; int row2 = ui->mListAvailable->model()->rowCount();//获取当前模型中总行数 int row1 = ui->mListUsed->model()->rowCount(); for(int i = 0; i < row1; i++ ) { QModelIndex index = ui->mListUsed->model()->index(i,0);//获取第i行模型行ldxy provider = ui->mListUsed->model()->data( index, Qt::UserRole + 1).toString();//获取第index行数据 if( provider == providerId ) return; } qDebug()<<row2<<row1; int row = ui->mListAvailable->currentIndex().row();//获取当前选定的模型行数 if( row == -1) return; if( 传统的航空model = qobject_cast<传统的航空>(ui->mListUsed->model() ) ) { QStandardItem *item = new QStandardItem( provider->name() ); item->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable ); item->setData( provider->id(), Qt::UserRole + 1); model->appendRow( item ); } ui->mListAvailable->model()->removeRow( row );//删除模型}void MainWindow::on_mBtnRemove_clicked(){ QString providerId = ui->mListUsed->model()->data( ui->mListUsed->currentIndex()).toString(); Mydate *provider = new Mydate; int row = ui->mListUsed->currentIndex().row(); if( row == -1 ) return; if( 传统的航空model = qobject_cast<传统的航空>(ui->mListAvailable->model() ) ) { QStandardItem *item = new QStandardItem( providerId ); item->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable ); item->setData( provider->id(), Qt::UserRole + 1); model->appendRow( item ); } ui->mListUsed->model()->removeRow( row ); int row2 = ui->mListAvailable->model()->rowCount(); int row1 = ui->mListUsed->model()->rowCount(); qDebug()<<row2<<row1;}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。