QT控件----tableWidget的常规使⽤
⼀、前⾔:
正常开发GUI会⽤到的⼀个控件就是列表,这⾥介绍的就是QT其中⼀个列表控件:tableWidget。
需要实现功能:表头设置、内容显⽰、新增⾏数据、删除⾏数据及⼀些属性的配置。
⼆、tableWidget属性:
1、QHeaderView::QHeaderView(Qt::Orientation orientation,QWidget * parent =0)使⽤给定的⽅向和⽗对象,创建。
2、QHeaderView::~QHeaderView()析构函数
3、int QHeaderView::count()const返回有多少个区域(⼏列或⼏⾏)
4、void QHeaderView::currentChanged(constQModelIndex & current, constQModelIndex & old)QAbstractItemView::currentChanged()的重新实现
5、bool QHeaderView::event(QEvent * e)QObject::event()的重新实现。
6、void QHeaderView::geometriesChanged()[signal]⼏何数据改变时,发射该信号
7、void QHeaderView::headerDataChanged(Qt::Orientation orientation,int logicalFirst,int logicalLast)在给定⽅向上,从逻辑logicalFirst到逻辑logicalLast更新。
8、int QHeaderView::hiddenSectionCount()const返回隐藏的区域数量。
9、void QHeaderView::hideSection(int logicalIndex)隐藏指定的区域
10、int QHeaderView::horizontalOffset()const返回⽔平偏移量,如果是垂直头则返回0。
11、void QHeaderView::initStyleOption(QStyleOptionHeader * option)const通过指定的选项option初始化本表头。可以⽤该⽅法去设置⼦类表头,不需要重新绘制表头。
12、bool QHeaderView::isClickable()const表头是否可点击。可点击时,点击会排序。
13、bool QHeaderView::isMovable()const表头是否可移动。
14、bool QHeaderView::isSectionHidden(int logicalIndex)const该区域是否隐藏。
15、int QHeaderView::length()const返回标题⽅向的长度
16、int QHeaderView::logicalIndex(int visualIndex)const返回可见字段的逻辑字段数。
17、int QHeaderView::logicalIndexAt(int position)const返回指定位置的逻辑字段数。
18、int QHeaderView::logicalIndexAt(int x,int y)const返回指定位置的逻辑字段数。
19、void QHeaderView::moveSection(int from,int to)将第from移动到第to位置
20、int QHeaderView::offset()const返回偏移量
21、Qt::Orientation QHeaderView::orientation()const返回是⽔平表头还是垂直表头
22、void QHeaderView::paintSection(QPainter * painter, constQRect & rect,int logicalIndex)const使⽤给定painter和rect去绘制指定的字段
23、ResizeMode QHeaderView::resizeMode(int logicalIndex)const返回指定逻辑字段的⼤⼩调整模式
24、void QHeaderView::resizeSection(int logicalIndex,int size)调整指定逻辑字段的⼤⼩
25、void QHeaderView::resizeSections(QHeaderView::ResizeMode mode)重新设置⼤⼩调整模式。
26、bool QHeaderView::restoreState(constQByteArray & state)回复指定的状态state,成功返回真,失败返回假
27、QByteArray QHeaderView::saveState()const保存表头状态,⽤来去回复。
28、void QHeaderView::sectionAutoResize(int logicalIndex,QHeaderView::ResizeMode mode)[signal]当⼀个字段⼤⼩改变时,发送该信号。
29、void QHeaderView::sectionClicked(int logicalIndex)[signal]当字段被点击是,发送该信号
30、void QHeaderView::sectionCountChanged(int oldCount,int newCount)[signal]当区字段量变化时(添加或删除),发送该信号。
31、void QHeaderView::sectionDoubleClicked(int logicalIndex)[signal]双击字段发送信号
32、void QHeaderView::sectionEntered(int logicalIndex)[signal]⿏标在字段上并且按下左键,发送信号
33、void QHeaderView::sectionHandleDoubleClicked(int logicalIndex)[signal]双击字段发送信号
34、void QHeaderView::sectionMoved(int logicalIndex,int oldVisualIndex,int newVisualIndex)[signal]字段移动时,发送信号
35、int QHeaderView::sectionPosition(int logicalIndex)const返回逻辑字段的所在相对于开头的位置,如果逻辑字段隐藏了,返回-1。如果为⽔平表头,返回相对的x坐标,如果为垂直表头,返回相对的y坐标。
36、void QHeaderView::sectionPressed(int logicalIndex)[signal]当字段被按下,发送信号
37、void QHeaderView::sectionResized(int logicalIndex,int oldSize,int newSize)[signal]当字段⼤⼩改变时,发送信号
38、int QHeaderView::sectionSize(int logicalIndex)const返回逻辑字段的⼤⼩
39、QSize QHeaderView::sectionSizeFromContents(int logicalIndex)const返回逻辑字段所在的区域的尺⼨。
40、int QHeaderView::sectionSizeHint(int logicalIndex)const返回⼀个逻辑字段合适的尺⼨(推荐值)
41、int QHeaderView::sectionViewportPosition(int logicalIndex)const返回逻辑字段可视位置
42、void QHeaderView::sectionsAboutToBeRemoved(constQModelIndex & parent,int logicalFirst,int logicalLast)[protected slot]当逻辑字段被删除时,调⽤该槽函数。
43、bool QHeaderView::sectionsHidden()const如果字段被隐藏返回真
44、void QHeaderView::sectionsInserted(constQModelIndex & parent,int logicalFirst,int logicalLast)[protected slot]当插⼊逻辑字段时,调⽤该槽函数
45、bool QHeaderView::sectionsMoved()const字段被移动,返回真
46、void QHeaderView::setClickable(bool clickable)设置表头是否能被点击
47、void QHeaderView::setMovable(bool movable)设置表头中字段是否能移动,如果设为假,表头是固定的
48、void QHeaderView::setOffset(int offset)设置表头偏移量
49、void QHeaderView::setOffsetToLastSection()设置偏移量,使最后⼀个字段可见
50、void QHeaderView::setOffsetToSectionPosition(int visualIndex)设置给定位置的偏移量
51、void QHeaderView::setResizeMode(ResizeMode mode)设置表头⼤⼩变化时的约束模式
52、void QHeaderView::setResizeMode(int logicalIndex,ResizeMode mode)设置指定逻辑字段⼤⼩变换的约束模式。
53、void QHeaderView::setSectionHidden(int logicalIndex,bool hide)设置指定逻辑字段是否隐藏
53、void QHeaderView::setSectionHidden(int logicalIndex,bool hide)设置指定逻辑字段是否隐藏
54、void QHeaderView::setSelection(constQRect & rect, QItemSelectionModel::SelectionFlags flags)设置规定rect范围内字段以flags标志显⽰。
55、void QHeaderView::setSortIndicator(int logicalIndex,Qt::SortOrder order)指定字段按照指定⽅式排序。注意:有的字段不⽀持排序,可能会混乱。
56、void QHeaderView::showSection(int logicalIndex)显⽰指定的逻辑字段
57、QSize QHeaderView::sizeHint()const返回⼀个推荐值
58、void QHeaderView::sortIndicatorChanged(int logicalIndex,Qt::SortOrder order)[signal]如果指定逻辑字段发⽣排序,发送该信号
59、Qt::SortOrder QHeaderView::sortIndicatorOrder()const返回排序⽅式
60、int QHeaderView::sortIndicatorSection()const返回有排序的字段
61、int QHeaderView::stretchSectionCount()const返回可以伸缩的字段的数量
62、void QHeaderView::swapSections(int first,int second)交换字段
63、int QHeaderView::verticalOffset()const返回垂直表头的偏移,⽔平表头返回0
64、int QHeaderView::visualIndex(int logicalIndex)const返回给定逻辑字段的可见引索值
65、int QHeaderView::visualIndexAt(int position)const返回指定位置的可见引索。
三、tableWidget初始化:
ui.tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);// 整⾏选中的⽅式
ui.tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);// 设置为可以选中单个⽬标
ui.tableWidget->verticalHeader()->setVisible(false);// 隐藏⾏表头
ui.tableWidget->resizeColumnsToContents();// 列宽与内容匹配
ui.tableWidget->resizeRowsToContents();// ⾏⾼与内容匹配
ui.tableWidget->resizeColumnToContents(0);// ⾃动调整列宽
ui.tableWidget->setColumnCount(4);// 设置列数
QHeaderView* widthlist = ui.tableWidget->horizontalHeader();//创建列宽list
widthlist->setStyleSheet("QHeaderView::section{border:0px;background-color:#f2f1f7;color:#7f7f7f;}");//设置颜⾊
widthlist->resizeSection(0,80);// 设置列宽
widthlist->resizeSection(1,150);
widthlist->resizeSection(2,400);
widthlist->setStretchLastSection(true);// 最后⼀栏⾃适应宽度
QStringList list;// 创建列表头list
控件的使用list <<"NO"<<"Time"<<"Value"<<"Type";
ui.tableWidget->setHorizontalHeaderLabels(list);
ui.tableWidget->show();
四、添加内容:
//===============控件tableWidget操作新增数据===========================
int rowcount = ui.tableWidget->rowCount();//获取当前⾏数
if(rowcount < i+1)//如果添加的数据所在的⾏数⼤于实际控件存在的列数,则新增⼀列
{
ui.tableWidget->insertRow(rowcount);//新增⾏
}
ui.tableWidget->setItem(i, NO,new QTableWidgetItem(“123456”));//新增⾏添加数据
ui.tableWidget->setItem(i, Time,new QTableWidgetItem(“4567”));
ui.tableWidget->setItem(i, Value,new QTableWidgetItem(“443567”));
ui.tableWidget->setItem(i, Type,new QTableWidgetItem(“98665”));
五、删除选中⾏:
int rowIndex = ui.tableWidget->currentRow();//查询选中⾏
if(rowIndex >-1)
{
ui.tableWidget->removeRow(rowIndex);//删除选中⾏
}
六、最后⼀⾏新增⼀⾏数据:
int rowcount = ui.tableWidget->rowCount();//获取当前⾏数
ui.tableWidget->insertRow(rowcount);//新增⾏
ui.tableWidget->setItem(rowcount, NO,new QTableWidgetItem(newcount));//新增⾏添加数据
ui.tableWidget->setItem(rowcount, Time,new QTableWidgetItem(“34566”));
ui.tableWidget->setItem(rowcount, Value,new QTableWidgetItem(“54433”));
ui.tableWidget->setItem(rowcount, Type,new QTableWidgetItem(“345666543”));
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论