Qt 创建List, 添加删除Item
qt中list用法

Qt中List用法详解一、简介Qt是一个跨平台的C++图形用户界面应用程序开发框架。
在Qt中,QList是一个模板类,用于存储和操作一系列的元素,这些元素可以是任何类型的数据。
QList提供了许多方便的成员函数,使得对列表的操作更加简单和高效。
二、QList的基本概念1. QList是一个模板类,可以存储任意类型的数据,如整数、浮点数、字符串、自定义对象等。
2. QList是一个动态数组,可以根据需要自动调整大小。
3. QList支持快速插入和删除操作。
4. QList可以通过索引访问元素。
三、QList的常用成员函数1. 构造函数:QList()创建一个空列表;QList(const QList& other)复制另一个列表;QList(int size, T value=T())创建一个指定大小的列表,并用给定的值初始化每个元素。
2. 添加元素:void addFirst(const T &value)在列表的开头添加一个元素;void addLast(const T &value)在列表的结尾添加一个元素;void prepend(const T &value)在列表的开头添加一个元素的副本;void append(const T &value)在列表的结尾添加一个元素的副本。
3. 插入元素:void insert(int index, const T &value)在指定位置插入一个元素;void insert(int index, int count, const T &value)在指定位置插入count个元素的副本。
4. 删除元素:void removeAt(int index)删除指定位置的元素;void takeAt(int index)返回指定位置的元素,并从列表中删除它。
5. 查找元素:int find(const T &value, int from = 0)从from位置开始查找value,返回第一个匹配元素的索引;int findIndex(const T &value, int from = 0)从from位置开始查找value,返回第一个匹配元素的索引;bool contains(const T &value)检查列表是否包含value。
Qt学习笔记 TableWidget使用说明和增删改操作的实现

Qt学习笔记TableWidget使用说明和增删改操作的实现看一下效果很简单的一个小功能先说分部讲一下过程再给出详细代码添加数据MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){ui->setupUi(this);ui->tableWidget->setColumnCount(2);ui->tableWidget->setRowCount(2);ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"name"<<"ag e");ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows); //整行选中的方式ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); //禁止修改ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection); //设置为可以选中单个ui->tableWidget->setItem(0,0,new QTableWidgetItem("zhangsan"));ui->tableWidget->setItem(0,1,new QTableWidgetItem("1"));ui->tableWidget->verticalHeader()->setVisible(false); //隐藏列表头ui->tableWidget->setItem(1,0,new QTableWidgetItem("lisi"));ui->tableWidget->setItem(1,1,new QTableWidgetItem("20"));ui->tableWidget->selectRow(0);}进行增删除修改操作#include "mainwindow.h"#include "ui_mainwindow.h"#include <QDebug>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow){ui->setupUi(this);ui->tableWidget->setColumnCount(2);ui->tableWidget->setRowCount(2);ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"name"<<"ag e");ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows); //整行选中的方式ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); //禁止修改ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection); //设置为可以选中单个ui->tableWidget->setItem(0,0,new QTableWidgetItem("zhangsan"));ui->tableWidget->setItem(0,1,new QTableWidgetItem("1"));ui->tableWidget->verticalHeader()->setVisible(false); //隐藏列表头ui->tableWidget->setItem(1,0,new QTableWidgetItem("lisi"));ui->tableWidget->setItem(1,1,new QTableWidgetItem("20"));ui->tableWidget->selectRow(0);}MainWindow::~MainWindow(){delete ui;}void MainWindow::on_tableWidget_currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous){if(previous!=Q_NULLPTR){previous->setBackgroundColor(Qt::transparent);}if(current==Q_NULLPTR)return;current->setBackgroundColor(Qt::blue);}void MainWindow::on_btn_Add_clicked(){// QAbstractItemModel *model = ui->tableWidget->model();// model->insertRow(model->rowCount());int cols=ui->tableWidget->columnCount();int rows=ui->tableWidget->rowCount();qDebug()<<rows;ui->tableWidget->insertRow(rows);for(int i=0;i<cols;i++){ui->tableWidget->setItem(rows,i,newQTableWidgetItem("new"+QString::number(rows)));}ui->tableWidget->selectRow(rows);}void MainWindow::on_btn_Del_clicked(){QTableWidgetItem * item = ui->tableWidget->currentItem();if(item==Q_NULLPTR)return;ui->tableWidget->removeRow(item->row());}void MainWindow::on_btn_Modify_clicked(){QModelIndex index = ui->tableWidget->currentIndex();QList<QTableWidgetItem *> listItem =ui->tableWidget->selectedItems();if(listItem.count()==0)return;foreach (QTableWidgetItem * item, listItem) {item->setText("modify");}// QTableWidgetItem * item = ui->tableWidget->currentItem();// if(item==Q_NULLPTR)return;// item->setText("modify");}这里有一些对TableWidget的设置说明一下1. 将表格变为禁止编辑在默认情况下,表格里的字符是可以更改的,比如双击一个单元格,就可以修改原来的内容,如果想禁止用户的这种操作,让这个表格对用户只读,可以这样:tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);QAbstractItemView.NoEditTriggers是QAbstractItemView.EditTrigger枚举中的一个,都是触发修改单元格内容的条件:QAbstractItemView.NoEditTriggers 0 No editing possible. 不能对表格内容进行修改QAbstractItemView.CurrentChanged 1 Editing start whenever current item changes.任何时候都能对单元格修改QAbstractItemView.DoubleClicked 2 Editing starts when an item is double clicked.双击单元格QAbstractItemView.SelectedClicked 4 Editing starts when clicking on an already selected item.单击已选中的内容QAbstractItemView.EditKeyPressed 8 Editing starts when the platform edit key has been pressed over an item.3.单个选中和多个选中的设置:tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection); //设置为可以选中多个目标该函数的参数还可以是:QAbstractItemView.NoSelection 不能选择QAbstractItemView.SingleSelection 选中单个目标QAbstractItemView.MultiSelection 选中多个目标QAbstractItemView.ExtendedSelection QAbstractItemView.ContiguousSelect ion 的区别不明显,主要功能是正常情况下是单选,但按下Ctrl或Shift键后,可以多选4. 表格表头的显示与隐藏如果两种都要设置,只要用Qt.AlignHCenter | Qt.AlignVCenter 的方式即可3. 合并单元格效果的实现:tableWidget->setSpan(0, 0, 3, 1) # 其参数为:要改变单元格的1行数2列数要合并的3行数4列数4. 设置单元格的大小首先,可以指定某个行或者列的大小tableWidget->setColumnWidth(3,200);tableWidget->setRowHeight(3,60);还可以将行和列的大小设为与内容相匹配tableWidget->resizeColumnsToContents();tableWidget->resizeRowsToContents();5. 获得单击单元格的内容通过实现itemClicked (QTableWidgetItem *) 信号的槽函数,就可以获得鼠标单击到的单元格指针,进而获得其中的文字信息connect(tableWidget,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),this, SLOT(getItem(QTreeWidgetItem*,int)));//将itemClicked信号与函数getItem绑定6.QTableWidget要调整表格行宽主要涉及以下一个函数resizeColumnsToContents(); 根据内容调整列宽resizeColumnToContents(int col); 根据内容自动调整给定列宽horizontalHeader()->setResizeMode 把给定列设置为给定模式主要模式有Stretch和Fixed7.int row = rowCount();removeRow(row);//清除已有的行列setShowGrid(true);//显示表格线verticalHeader()->setVisible(false);//隐藏左边垂直QHeaderView *headerView = horizontalHeader();headerView->setMovable(false);//去除表头的移动headerView->resizeSection(0,284);//设置第一列宽headerView->resizeSection(1,127);//设置第二列宽headerView->setResizeMode(QHeaderView::Fixed);//列表不能移动headerView->setClickable(false);//不响应鼠标单击setEditTriggers(QTableWidget::NoEditTriggers);//不能编辑setSelectionBehavior(QTableWidget::SelectRows);//一次选中一行setSelectionMode(QAbstractItemView::SingleSelection);//只能单选/*QScrollBar *scrollBar = horizontalScrollBar();scrollBar->hide();*/setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//去掉水平滚动条setVerticalScrollMode(QAbstractItemView::ScrollPerItem);//垂直滚动条按项移动setAutoScroll(false);//去掉自动滚动。
qt的list view使用方法

Qt的ListView是一种用于显示项目列表的视图控件。
以下是一些基本的使用步骤:创建ListModel:首先,需要创建一个模型来存储和管理要显示的数据。
Qt提供了多种模型,如QStringListModel、QStandardItemModel等,可以根据需要选择合适的模型。
设置ListView的Model:创建好模型后,需要将其设置为ListView的model。
这可以通过调用ListView的setModel()方法实现。
定制ListView:ListView提供了多种方式来定制其外观和行为。
例如,可以通过设置delegate 来改变项目的渲染方式,或者通过设置itemSelectionModel来改变项目的选择行为。
添加和删除项目:要向ListView中添加或删除项目,需要操作其model。
例如,对于QStringListModel,可以使用insertRows()和removeRows()方法来添加或删除行。
连接信号和槽:ListView提供了多种信号,如clicked()、doubleClicked()等,可以根据需要连接这些信号到适当的槽函数,以实现交互功能。
以下是一个简单的示例代码,演示了如何使用ListView显示一个字符串列表:cpp#include <QApplication>#include <QListView>#include <QStringListModel>int main(int argc, char *argv[]){QApplication app(argc, argv);QStringList list;list << "Item 1" << "Item 2" << "Item 3";QStringListModel model(list);QListView view;view.setModel(&model);view.show();return app.exec();}这个示例创建了一个包含三个项目的字符串列表,并使用QStringListModel将其设置为ListView的model。
qgraphicsitemgroup用法

qgraphicsitemgroup用法QGraphicsItemGroup是Qt提供的一个类,用来管理一组QGraphicsItem对象。
通过使用QGraphicsItemGroup,可以很方便地对多个图形项进行集中管理和操作。
下面将详细介绍QGraphicsItemGroup的常见用法。
1.创建和添加图形项首先,可以使用QGraphicsItemGroup的构造函数创建一个空的图形项组,也可以使用addGroup(方法将其他图形项添加到组中。
例如:```QGraphicsItemGroup *group = new QGraphicsItemGroup(;QGraphicsEllipseItem *ellipseItem = new QGraphicsEllipseItem(0, 0, 100, 100);QGraphicsRectItem *rectItem = new QGraphicsRectItem(0, 0, 100, 100);group->addToGroup(ellipseItem);group->addToGroup(rectItem);```2.移除和删除图形项可以使用removeFromGroup(方法将图形项从组中移除,或者使用delete关键字删除图形项。
例如:```group->removeFromGroup(ellipseItem);delete rectItem;```3.遍历和操作图形项可以使用childItems(方法获得组中的所有图形项,并使用遍历进行进一步的操作。
例如:```QList<QGraphicsItem *> items = group->childItems(;foreach (QGraphicsItem *item, items)item->setPos(10, 10);item->setRotation(45);```4.组与场景的交互将图形项添加到组中后,可以使用group(方法获得图形项所属的组,或者使用setGroup(方法将图形项添加到其他组中。
pyqt的listview清空数据的方法

pyqt的listview清空数据的方法全文共四篇示例,供读者参考第一篇示例:PyQt是一个基于Python编程语言的GUI工具包,它可以让开发者使用Python语言来创建交互式的应用程序。
在PyQt中,ListView 是一种常用的控件,用于显示列表数据。
有时候我们需要在ListView中清空数据,本文将介绍几种方法来实现这一目的。
1. 使用setModel方法在PyQt中,ListView的数据是由model来管理的。
要清空ListView中的数据,可以通过setModel方法来设置一个空的model。
具体的代码如下:```model = QStandardItemModel()listView.setModel(model)```通过以上代码,我们创建了一个空的QStandardItemModel并将其设置为ListView的model,从而清空了ListView中的数据。
2. 使用clear方法除了设置一个空的model外,还可以直接调用ListView的clear 方法来清空数据。
代码如下:```listView.clear()```以上代码会清空ListView中的所有数据,包括显示的项目和选择的项目。
3. 手动移除所有项目如果想要逐个移除ListView中的项目,可以使用removeItem方法。
代码如下:```for i in range(listView.count()):item = listView.item(i)listView.takeItem(i)del item```以上代码会逐个移除ListView中的项目,并释放内存。
总结在PyQt中清空ListView的数据有多种方法,可以根据具体情况选择合适的方法。
通过本文介绍的方法,我们可以轻松地清空ListView中的数据,让应用程序更加灵活和高效。
希望以上内容能对你有所帮助。
第二篇示例:PyQt是一个基于Python语言开发的GUI库,它提供了丰富的组件和功能,方便开发者快速构建漂亮的图形界面应用程序。
qt5 qlistwidgetitem用法

qt5 qlistwidgetitem用法Qt的QListWidgetItem是一种用以在Qt应用程序中展示项目列表的基本控件。
它提供了许多功能,方便用户对列表项进行操作和管理。
本文将深入探讨QListWidgetItem的用法,一步一步地回答关于它的一些常见问题。
首先,我们先了解一下QListWidgetItem的概念和基本特性。
QListWidgetItem是Qt中的一个类,用于表示列表中的每个项目。
它提供了一些方法和属性,可以对这些项目进行操作,比如设置文本、图标、状态等。
QListWidgetItem可在QListWidget中使用,它是一种方便快捷的方式来展示项目列表。
1. QListWidgetItem的创建和初始化QListWidgetItem的创建非常简单。
只需按照以下步骤操作:- 首先,在Qt应用程序中创建一个QListWidget控件,用于展示列表项;- 然后,使用new关键字创建一个QListWidgetItem对象;- 最后,将创建的QListWidgetItem对象添加到QListWidget控件中。
以下是示例代码,演示如何创建和初始化QListWidgetItem:创建QListWidget控件QListWidget* listWidget = new QListWidget(this);创建QListWidgetItem对象QListWidgetItem* item = new QListWidgetItem();设置QListWidgetItem的文本item->setText("Item 1");将QListWidgetItem添加到QListWidget控件中listWidget->addItem(item);2. QListWidgetItem的常用属性和操作QListWidgetItem有许多常用属性和操作,用于定制和管理列表项。
列表控件的操作

列表控件的操作一:列表控件的操作,删除,添加、显示进入的目录文件1,界面设计2,头文件#ifndef WIDGET_H#define WIDGET_H#include<QWidget>#include<QListWidgetItem>namespace Ui{class Widget;}class Widget:public QWidget{Q_OBJECTpublic:explicit Widget(QWidget*parent=0);~Widget();private slots:void on_addCity_clicked();void on_deleteCity_clicked();void on_deleteAll_clicked();void on_showDirBtn_clicked();void on_listWidget_itemClicked(QListWidgetItem*item);void on_listWidget_itemDoubleClicked(QListWidgetItem *item);private:Ui::Widget*ui;};#endif// WIDGET_H3,源文件#include"widget.h"#include"ui_widget.h"#include<QListWidgetItem>#include<QStringList>#include<QMessageBox>#include<QDebug>#include<QDir>#include<QFileDialog>Widget::Widget(QWidget*parent):QWidget(parent),ui(new Ui::Widget){ui->setupUi(this);ui->listWidget->setViewMode(QListView::IconMode); connect(ui->lineEdit,SIGNAL(returnPressed()),this, SLOT(on_addCity_clicked()));}Widget::~Widget(){delete ui;}//添加条目void Widget::on_addCity_clicked(){QString cityNmae=ui->lineEdit->text();if(cityNmae.isEmpty()){return;QListWidgetItem*item=new QListWidgetItem;item->setText(cityNmae);ui->listWidget->addItem(item);ui->lineEdit->clear();}//删除所单击的条目void Widget::on_deleteCity_clicked(){QListWidgetItem*item=ui->listWidget->takeItem(ui->listWidget->currentRow());delete item;}//删除所有的项目void Widget::on_deleteAll_clicked(){int counter=ui->listWidget->count();for(int index=0;index<counter;index++){QListWidgetItem*item=ui->listWidget->takeItem(index);delete item;}}//显示进入的目录void Widget::on_showDirBtn_clicked(){ui->listWidget->clear();QDir dir=QDir::currentPath();QStringList fileName=dir.entryList();if(fileName.size()==0)QMessageBox::information(this,"Error Message","No file Selected");return;}for(int index=0;index<fileName.size();index++){if(fileName.at(index)=="."||fileName.at(index)==".."){continue;}QListWidgetItem*item=new QListWidgetItem;item->setText(fileName.at(index));ui->listWidget->addItem(item);}}//显示单击的项目void Widget::on_listWidget_itemClicked(QListWidgetItem *item){QMessageBox::information(this,"information","singal clicked"+item->text());}//显示双击的项目voidWidget::on_listWidget_itemDoubleClicked(QListWidgetItem*item){QMessageBox::information(this,"information","double clicked"+item->text());博文索引持续更新中。
qtreewidgetitem 用法

QTreeWidgetItem是Qt库中的一个类,用于在QTreeWidget控件中表示树形结构的节点。
以下是QTreeWidgetItem的主要用法:1. 创建和初始化:可以通过构造函数来创建QTreeWidgetItem对象,并进行初始化。
有三种构造函数可以创建QTreeWidgetItem,分别是带有一个参数、两个参数和三个参数的构造函数。
不带参数的构造函数会创建一个没有父对象、没有子对象的根节点。
带有一个和两个参数的构造函数会创建一个具有父对象或子对象的节点。
带有一个和两个参数的构造函数可以用于在程序中动态创建和添加树形结构的节点。
2. 添加子节点:使用insertChild()函数可以在QTreeWidgetItem 对象中添加子节点。
该函数需要指定要添加的子节点的位置和要添加的子节点对象。
3. 删除节点:使用removeChild()函数可以从QTreeWidgetItem对象中删除子节点。
该函数需要指定要删除的子节点的位置和要删除的子节点对象。
4. 获取和设置数据:可以使用QTreeWidgetItem对象的data()和setData()函数来获取和设置节点的数据。
data()函数需要指定数据的索引位置,setData()函数需要指定数据的索引位置和要设置的值。
5. 插入和删除节点:可以使用insertSibling()和removeSibling()函数来插入和删除同级节点。
insertSibling()函数需要指定要插入的兄弟节点的位置和要插入的兄弟节点对象,removeSibling()函数需要指定要删除的兄弟节点的位置和要删除的兄弟节点对象。
6. 查找节点:可以使用QTreeWidgetItem类的静态函数findChildren()来查找具有特定标识符的节点。
该函数需要指定要查找的父节点对象和要查找的标识符。
7. 其他操作:可以使用QTreeWidgetItem类的其他函数来进行一些其他操作,比如获取节点的文本、设置节点的图标、获取节点的子节点数量等等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#ifndef LISTWINDOW_H_
#define LISTWINDOW_H_
#include<QDialog>
class QPushButton;
class QListWidget;
class QWidget;
class ListWindow : public QDialog {
Q_OBJECT
public:
ListWindow(QWidget *parent = 0);
virtual ~ListWindow();
public slots:
void moveLeft();
void moveRight();
private:
QPushButton *moveLeftButton;
QPushButton *moveRightButton;
QListWidget *leftList;
QListWidget *rightList;
};
#endif/**//*LISTWINDOW_H_*/
#include"ListWindow.h"
#include<QPushButton>
#include<QListWidget>
#include<QWidget>
#include<QHBoxLayout>
#include<QVBoxLayout>
#include<QGridLayout>
#include<QStringList>
#include<QListWidgetItem>
ListWindow::ListWindow(QWidget *parent) :
QDialog(parent) {
QGridLayout *gridLayout = new QGridLayout();
gridLayout->addWidget(leftList = new QListWidget(), 0, 0, 3, 1);
gridLayout->addWidget(moveLeftButton = new QPushButton("<<"), 0, 1, 1, 1);
gridLayout->addWidget(moveRightButton = new QPushButton(">>"), 1, 1, 1, 1);
gridLayout->addWidget(rightList = new QListWidget(), 0, 2, 3, 1);
QObject::connect(moveLeftButton, SIGNAL(clicked()), this, SLOT(moveLeft()));
QObject::connect(moveRightButton, SIGNAL(clicked()), this, SLOT(moveRight()));
QStringList items;
items << "One" << "Two" << "Three" << "Four" << "Five" << "Sechs"
<< "Sieben" << "One" << "Two" << "Three" << "Four" << "Five"
<< "Sechs" << "Sieben";
leftList->addItems(items);
this->setLayout(gridLayout);
}
ListWindow::~ListWindow() {
}
void ListWindow::moveLeft() {
// if (rightList->currentItem() == 0) {
// return;
// }
//
// QString text = rightList->currentItem()->text();
// delete rightList->currentItem();
// leftList->addItem(text);
// The takeItem() method is used to remove an Item form one list without // having to delete it. TakeItem() no deleting or no creating, more efficient.
if (rightList->selectedItems().count() != 1) {
return;
}
QListWidgetItem *item = rightList->takeItem(rightList->currentRow());
leftList->addItem(item);
}
void ListWindow::moveRight() {
// if (leftList->currentItem() == 0) {
// return;
// }
//
// QString text = leftList->currentItem()->text();
// delete leftList->currentItem();
// rightList->addItem(text);
if (leftList->selectedItems().count() != 1) {
return;
}
QListWidgetItem *item = leftList->takeItem(leftList->currentRow());
rightList->addItem(item);
}。