QTableWidget的使用方法
首先我在ui界面加入了一个TableWidget,这个TableWidget我设置了6列
首先在。H文件中加入头文件:include
一、在初始化时加入下面代码uitableWidgetviewport()installEventFilter(this);注册事件过滤器uitableWidgetsetVerticalScrollMode(QAbstractItemView::ScrollPerPixel);设置滚动条平滑一点uitableWidgethorizontalHeader()setStretchLastSection(true);设置充满表宽度设置各列的宽度uitableWidgetsetColumnWidth(0,45);uitableWidgetsetColumnWidth(1,45);uitableWidgetsetColumnWidth(2,150);uitableWidgetsetColumnWidth(3,150);uitableWidgetsetColumnWidth(4,150);uitableWidgetsetColumnWidth(5,180);uitableWidgetverticalHeader()hide();设置垂直头不可见uitableWidgetsetSelectionBehavior(QAbstractItemView::SelectRows);设置选择行为时每次选择一行uitableWidgetsetEditTriggers(QAbstractItemView::NoEditTriggers);设置不可编辑uitableWidgetsetSelectionMode(QAbstractItemView::SingleSelection);tablewidgetsetSelectionMode(QAbstractItemView::ExtendedSelection);可多选(Ctrl、Shift、CtrlA都可以)tablewidgethorizontalHeader()resizeSection(0,150);设置表头第一列的宽度为150tablewidgethorizontalHeader()setFixedHeight(25);设置表头的高度tablewidgetsetStyleSheet(selectionbackgroundcolor:lightblue;);设置选中背景色tablewidgethorizontalHeader()setStyleSheet(QHeaderView::section{background:skyblue;});设置表头背景色设置水平、垂直滚动条样式tablewidgethorizontalScrollBar()setStyleSheet(QScrollBar{background:transparent;height:10px;}QScrollBar::handle{background:lightgray;border:2pxsolidtransparent;borderradius:5px;}QScrollBar::handle:hover{background:gray;}QScrollBar::subline{background:transparent;}QScrollBar::addline{background:transparent;});tablewidgetverticalScrollBar()setStyleSheet(QScrollBar{background:transparent;width:10px;}QScrollBar::handle{background:lightgray;border:2pxsolidtransparent;borderradius:5px;}QScrollBar::handle:hover{background:gray;}QScrollBar::subline{background:transparent;}QScrollBar::addline{background:transparent;});uitableWidgetshow();
二、多选并获取所选行
thissetSelectionMode(QAbstractItemView::ExtendedSelection);设置多选(可以CtralA全选CtralShift多选)获取所选行号:boolTableWidget::getSelectedRow(QSetsetrow){QListitemsthisselectedItems();intitemcountitems。count();if(itemcount0){returnfalse;}for(inti0;iitemcount;i){获取选中的行intitemrowthisrow(items。at(i));setrow。insert(itemrow);}returntrue;}
三、操作表单(添加、删除行等)
(1)更新整个表格,插入行uitableWidgetclearContents();清除表格,在析构中也要调用uitableWidgetsetRowCount(SearchList。size());设置行数,每次更新tablewidget都要调用这两行for(inti0;iSearchList。size();i){这一行中的每一列都加入各自的数据uitableWidgetsetItem(i,0,newQTableWidgetItem(tr(1)。arg(i1)));uitableWidgetsetItem(i,1,newQTableWidgetItem(tr(1)。arg()));uitableWidgetsetItem(i,2,newQTableWidgetItem(tr(1)。arg(SearchList。at(i)。name)));uitableWidgetsetItem(i,3,newQTableWidgetItem(SearchList。at(i)。startTime。toString(yyyyMMddhh:mm:ss)));uitableWidgetsetItem(i,4,newQTableWidgetItem(SearchList。at(i)。endTime。toString(yyyyMMddhh:mm:ss)));uitableWidgetsetItem(i,5,newQTableWidgetItem(tr(1)。arg(qtime)));设置文本为中间对齐uitableWidgetitem(i,0)setTextAlignment(Qt::AlignHCenterQt::AlignVCenter);uitableWidgetitem(i,1)setTextAlignment(Qt::AlignHCenterQt::AlignVCenter);uitableWidgetitem(i,2)setTextAlignment(Qt::AlignHCenterQt::AlignVCenter);uitableWidgetitem(i,3)setTextAlignment(Qt::AlignHCenterQt::AlignVCenter);uitableWidgetitem(i,4)setTextAlignment(Qt::AlignHCenterQt::AlignVCenter);uitableWidgetitem(i,5)setTextAlignment(Qt::AlignHCenterQt::AlignVCenter);设置行高uitableWidgetsetRowHeight(i,60);}
(2)设置指定行,这里将这一行最前面的设置一个号,然后设置整行为灰色for(inti0;ithisSearchList。size();i){tabrownuamber。append(i);for(intj0;j6;j){if(j1)设置该行第一列{uitableWidgetsetItem(i,j,newQTableWidgetItem(tr(1)。arg()));uitableWidgetitem(i,j)setTextAlignment(Qt::AlignHCenterQt::AlignVCenter);}uitableWidgetitem(i,j)setBackgroundColor(QColor(100,100,100));设置整行的颜色为灰色}}
(3)双击某一行
voidrecord::ontableWidgetcellDoubleClicked(introw,intcolumn){QListQTableWidgetItemitemsuitableWidgetselectedItems();if(!items。isEmpty()){intcountitems。count();获取该行的成员数,列数introwuitableWidgetrow(items。at(0));获取该行的行号for(inti0;icount;i)获取该行所有成员的数据,{introwuitableWidgetrow(items。at(i));QTableWidgetItemitemitems。at(i);QStringtextitemtext();获取内容}获取选中行第二列的数据QTableWidgetItemitemuitableWidgetrightitem(row,2);qDebug()itemText();}}
单击和上面的双击差不多
同样也可以获取选中的行和列uitableWidgetclearContents();
清除tableWidget,防止内存泄漏record::record(){uitableWidgetclearContents();deleteui;}
【领QT开发教程学习资料,点击下方链接莬费领取,先码住不迷路】
点击这里:链接