手机网站改app,免费软件看电视剧,营销方案有哪些,wordpress js调用新闻目录
1.多元素控件介绍
2.ListWidget控件
属性
核心方法
核心信号
细节
Demo#xff1a;编辑日程
3.TableWidget控件
核心方法
QTableWidgetItem核心信号
QTableWidgetItem核心方法
细节
Demo#xff1a;编辑学生信息
4.TreeWidget控件
核心方法
核心信号…目录
1.多元素控件介绍
2.ListWidget控件
属性
核心方法
核心信号
细节
Demo编辑日程
3.TableWidget控件
核心方法
QTableWidgetItem核心信号
QTableWidgetItem核心方法
细节
Demo编辑学生信息
4.TreeWidget控件
核心方法
核心信号
QTreeWidgetItem核心方法
细节
控件使用案例 1.多元素控件介绍 Qt中为我们提供的多元素控件有QListWidget、QListView、QTableWidget、QTableView、QTreeWidget、QTreeView六个。那么我可以发现他们是两两一组xxxWidget和xxxView两种形式那么他俩之间有什么区别呢 xxxView是更底层的实现xxxWidget是基于xxxView封装而来的用户使用起来比较容易。此处的xxxView是MVC结构的实现MVC是软件开发中非常经典的软件结构组织形式。 Mmodel数据 Vview视图界面 Ccontroller控制器数据和视图之间的业务流程。 对于xxxView来说只是负责了上述的视图不负责数据如何表示以及数据和视图之间如何交互如果用户使用xxxView的话就需要自己创建model对象和视图关联起来。而QxxxWidget则是QxxxView的子类对Model进行了封装不需要我们自己去创建model对象直接向xxxWidget中添加数据即可。 2.ListWidget控件 该控件表示的是一个纵向的列表
属性
属性说明currentRow当前被选中的是第几行count一共有多少行sortingEnabled是否允许排序isWrapping是否允许换行itemAlignment元素的对齐方式selectRectVisible被选中的元素矩形是否可见spacing元素之间的间隔
核心方法
方法说明 addItem(QString label) addItem(QListWidgetItem* item) 列表中添加元素currentItem()返回当前选中的QListWidgetItem* 对象元素setCurrentItem(QListWidgetItem* item)设置选中哪一个元素setCurrentRow(int row)设置选中第几行的元素 insertItem(const QString label, int row) insertItem(QListWidgetItem* item, int row) 第一个是添加到最后一行这个方法是插入到第row行item(int row)获取第row行的QListWidgetItem* 对象元素takeItem(int row)删除指定行的元素返回删除的元素对象
核心信号
信号说明currentItemChanged(QListWidgetItem* current, QListWidgetItem* old)选中不同元素的时候会触发参数是当前选中的元素和之前选中的元素currentRowChanged(int)选中不同元素的时候触发参数是当前选中元素的行数itemClicked(QListWidgetItem* item)点击某个元素的时候触发itemDoubleClicked(QListWidgetItem* item)双击某个元素的时候触发itemEntered(QListWidgetItem* item)鼠标进入元素范围触发
细节
对于一个QListWidget控件内部的元素是一个个的QListWidgetItem组成的。本质上改类的内部就是一个文本图标构成所以QListWidgetItem内部提供了很多操作文本和图标的方法。例如设置字体、设置图标、设置对齐方式等内容。
Demo编辑日程 该demo中有QListWidget控件来显示日程列表提供了两个按钮去进行操作日程表的添加和删除的操作为添加按钮设置一个QLineEdit控件在增加的时候获取QLineEdit控件输入的内容然后添加到日程表当中。删除的时候获取到选中的是第几行然后进行调用方法删除。
#include widget.h
#include ui_widget.hWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui-setupUi(this);//初始化日程表//以字符串形式添加元素ui-listWidget-addItem(健身);ui-listWidget-addItem(学习);ui-listWidget-addItem(打球);//用对象的形式添加元素QListWidgetItem* item new QListWidgetItem(玩游戏);ui-listWidget-addItem(item);//匿名对象添加元素ui-listWidget-addItem(new QListWidgetItem(吃饭));
}Widget::~Widget()
{delete ui;
}//增加日程
void Widget::on_pushButton_add_clicked()
{//获取lineEdit单行输入框中的内容const QString str ui-lineEdit-text();//设置到listWidegt控件中ui-listWidget-addItem(new QListWidgetItem(str));
}//删除日程
void Widget::on_pushButton_del_clicked()
{//获取到被选中的元素的行号int row ui-listWidget-currentRow();if(row 0)return;//删除ui-listWidget-takeItem(row);
} 3.TableWidget控件 该控件表示的是一个表格控件包括横向和纵向两个方向由若干行若干列组成每一个表格都是由一个QTableWidgetItem对象构成。
核心方法
方法说明item(int row, int column)根据行数和列数获取指定的QTableWidgetItem*对象setItem(int row, int column, QTbleWidget*)根据行数列数设置表格中的元素currentItem()返回被选中的表格QTableWidgetItem对象currentRow()返回被选中的是第几行currentColumn()返回被选中的是第几列 row(QTableWidgetItem*) 获取指定item是第几行column(QTableWidgetItem*)获取指定item是第几列 rowCount() 获取行数columnCount()获取列数insertRow(int row)在第row行插入insertColumn(int column)在第column列插入removeRow(int row)删除第row行removeColumn(int column)删除第column列setHorizontalHeaderItem(int column, QTableWidget*)设置指定列的表头setVericalHeaderItem(int row, QTableWidget*)设置指定行的表头
QTableWidgetItem核心信号
信号说明cellClicked(int row, int column)点击单元格的时候触发cellDoubleClicked(int row, int column)双击单元格的时候触发cellEntered(int row, int column)鼠标进入单元格的时候触发currentCellChanged(int row, int column, int prevuiousRow, int previousColumn)选中不同的单元格的时候触发
QTableWidgetItem核心方法
方法说明row()获取当前在第几行column()获取当前在第几列 setText(const QString) 设置文本setTextAlignment(int)设置文本呢对齐方式setlcon(const QIcon)设置图标setSelected(bool)设置被选中setSizeHints(const QSize)设置尺寸setFont(onst QFont)设置字体 细节
对于单元格默认程序运行之后是可以编写文本内容的如果我们不想让用户去修改单元格中的内容的话需要设置 ui-tableWidget-setEditTriggers(QAbstractItemView::NoEditTriggers); Demo编辑学生信息
#include widget.h
#include ui_widget.hWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui-setupUi(this);ui-lineEdit-setPlaceholderText(请输入新增的列名称);//创建3行3列ui-tableWidget-insertRow(0);ui-tableWidget-insertRow(1);ui-tableWidget-insertRow(2);ui-tableWidget-insertColumn(0);ui-tableWidget-insertColumn(1);ui-tableWidget-insertColumn(2);//设置每一列的名称ui-tableWidget-setHorizontalHeaderItem(0, new QTableWidgetItem(学号));ui-tableWidget-setHorizontalHeaderItem(1, new QTableWidgetItem(姓名));ui-tableWidget-setHorizontalHeaderItem(2, new QTableWidgetItem(电话号));//添加初始数据ui-tableWidget-setItem(0, 0, new QTableWidgetItem(2000));ui-tableWidget-setItem(0, 1, new QTableWidgetItem(zhangsan));ui-tableWidget-setItem(0, 2, new QTableWidgetItem(000-0000-0000));ui-tableWidget-setItem(1, 0, new QTableWidgetItem(2001));ui-tableWidget-setItem(1, 1, new QTableWidgetItem(lisi));ui-tableWidget-setItem(1, 2, new QTableWidgetItem(123-4567-8901));ui-tableWidget-setItem(2, 0, new QTableWidgetItem(2002));ui-tableWidget-setItem(2, 1, new QTableWidgetItem(wangwu));ui-tableWidget-setItem(2, 2, new QTableWidgetItem(342-4483-1992));
}Widget::~Widget()
{delete ui;
}//增加一行
void Widget::on_pushButton_add_row_clicked()
{//获取行数int row_count ui-tableWidget-rowCount();//增加一行ui-tableWidget-insertRow(row_count);
}//增加一列
void Widget::on_pushButton_column_add_clicked()
{//获取列数int column_count ui-tableWidget-columnCount();//获取新增列的表头const QString str ui-lineEdit-text();//如果为空的话就不添加了if(str.isEmpty())return;//增加一列ui-tableWidget-insertColumn(column_count);//设置表头ui-tableWidget-setHorizontalHeaderItem(column_count, new QTableWidgetItem(str));
}//删除选中行
void Widget::on_pushButton_row_del_clicked()
{//获取当前选中的行int row ui-tableWidget-currentRow();//删除ui-tableWidget-removeRow(row);
}//删除选中列
void Widget::on_pushButton_column_del_clicked()
{//获取当前选中的列int column ui-tableWidget-currentColumn();//删除ui-tableWidget-removeColumn(column);
} 4.TreeWidget控件 该控件表示的是一个树形的控件里面的每一元素都是一个QTreeWidgetItem对象该对象内部可以包含多个文本和图标每一个文本或者图标是一列。可以给QTreeWidget设置顶层节点顶层节点可以是多个然后再给顶层节点添加子节点从而构成了树形结构。
核心方法
方法 说明 clear()清空所有子节点addTopLevelItem(QTreeWidegtItem* item)新增顶层节点topLevelItem(int index)获取指定下标的顶层节点topLevelItemCount()获取顶层节点的个数indexOfTopLevelItem(QTreeWidgetItem* item)查询指定节点在顶层节点中的下标takeTopLevelItem(int index)删除指定的顶层节点返回删除的QTreeWidgetItem*元素对象currentItem()获取到当前选中的节点返回QTreeWidgetItem元素怒对象setCurrentItem(QTreeWidgetItem* item)选中指定节点setExpanded(bool)展开/关闭节点setHeaderLabel(const QString text)设置TreeWidget的header名称
核心信号
信号说明 currentChanged(QTreeWidgetItem* current, QTreeWidgetItem* old) 切换园中元素的时候触发itemClicked(QTreeWidgetItem* item, int col)点击元素的时候触发itemDoubleClicked(QTreeWidgetItem* item, int col)双击元素的时候触发itemEntered(QTreeWidgetItem* item, int col)鼠标进入元素范围的时候触发itemExpanded(QTreeWidgetItem* item)元素被展开的时候触发itemCollapsend(QTreeWidgetItem* item)元素被折叠的时候触发
QTreeWidgetItem核心方法
方法说明addChild(QTreeWidgetItem* child)新增子节点childCount()获取子节点个数child(int index) 获取指定下标的子节点返回QTreeWidgetItem对象指针 takeChild(int index)删除指定下标的子节点removeChild(QTreeWidgetItem* child)删除对应的元素parent()获取该元素的父节点
细节
在添加顶层节点或者子节点传递QTreeWidgetItem对象的时候在设置文本的时候需要传递两个参数第一个表示第n列第二个参数是文本内容因为QTreeWidgetItem对象可以有很多列所以需要传递设置的文本是第几列。但是如果设置多列的话那么我们对应的设置控件名称的时候就需要调用setHeaderLabels设置多个列名称了。这样的话才能显示出来我们设置的多列元素。对于删除的时候来说删除的时候需要调用他的父节点的删除函数所以说要考虑删除元素的是不是顶层元素因为顶层元素没有父元素所以需要调用控件的删除函数去删除顶层元素如果不是的话调用父节点的删除函数即可。如果删除的节点下面还有子节点的话也会一起删除的。
控件使用案例
#include widget.h
#include ui_widget.hWidget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui-setupUi(this);//设置根节点的名称ui-treeWidget-setHeaderLabel(食物);//添加顶层节点QTreeWidgetItem* item1 new QTreeWidgetItem();item1-setText(0, 蔬菜);ui-treeWidget-addTopLevelItem(item1);QTreeWidgetItem* item2 new QTreeWidgetItem();item2-setText(0, 水果);ui-treeWidget-addTopLevelItem(item2);
}Widget::~Widget()
{delete ui;
}//添加顶层元素
void Widget::on_pushButton_topItem_add_clicked()
{//获取输入框的文本内容const QString str ui-lineEdit-text();if(str.isEmpty())return;//设置到顶层节点QTreeWidgetItem* item new QTreeWidgetItem();item-setText(0, str);ui-treeWidget-addTopLevelItem(item);
}//添加到选中元素
void Widget::on_pushButton_item_add_clicked()
{//获取输入框中的本文内容const QString str ui-lineEdit-text();if(str.isEmpty())return;//获取选中元素QTreeWidgetItem* item ui-treeWidget-currentItem();if(item nullptr)return;//添加节点QTreeWidgetItem* new_item new QTreeWidgetItem();new_item-setText(0, str);item-addChild(new_item);//设置展开父节点item-setExpanded(true);
}//删除选中元素
void Widget::on_pushButton_item_del_clicked()
{//获取选中元素QTreeWidgetItem* item ui-treeWidget-currentItem();if(item nullptr)return;//获取父元素QTreeWidgetItem* parent item-parent();//如果是顶层节点的话if(parent nullptr){//获取下标int index ui-treeWidget-indexOfTopLevelItem(item);//删除ui-treeWidget-takeTopLevelItem(index);}//非顶层节点else{parent-removeChild(item);}
}