最近用到QTableWidget,里面的东西很多不会用,在网上查的资料挺全的,但是还是想自己做个整理,省的以后到处找。
表头的相关设置
//设置列数
ui->tableWidget->setColumnCount( int );
//设置表头内容
ui->tableWidget->setHorizontalHeaderLabels( QStringList );
//显式隐藏窗口小部件
ui->tableWidget->verticalHeader()->setVisible( false );
//设置选择行为,以行为单位
ui->tableWidget->setSelectionBehavior( QAbstractItemView::SelectRows );
//设置选择模式,选择单行
ui->tableWidget->setSelectionMode( QAbstractItemView::SingleSelection );
//当点击任意行时,表头字体加粗
ui->tableWidget->horizontalHeader()->setHighlightSections(false);
//根据表头内容自动调整列宽,可能会有空白的空间
ui->tableWidget->horizontalHeader()->setSectionResizeMode( QHeaderView::ResizeToContents );
或者: ui->tableWidget->resizeColumnsToContents();
//根据空间大小自动调整列宽,不会留有空白
ui->tableWidget->horizontalHeader()->setSectionResizeMode( QHeaderView::Stretch );
//删除表格线
ui->tableWidget_defectInfo->clearContents();
//删除表中所有内容。但是表格线删除不了
ui->tableWidget_defectInfo->setRowCount(0);
将单元格内放小部件
//放QcomboBox( 带下拉框 )
QComboBox *cameraStauts = new QComboBox;
cameraStauts->addItems( QStringList );
cameraStauts->setCurrentText( QString );//此时的QSting是QStringList中的某一个
ui->tableWidget->setCellWidget( row, column, comboBox );
// 放item
QTableWidgetItem *exposureValue = new QTableWidgetItem;
exposureValue->setText( QString) );
ui->tableWidget->setItem( row, column, exposureValue );
其他小用法
//居中
ui->tableWidget->item( row, column )->setTextAlignment( Qt::AlignCenter );
//不可编辑,但字体不会变灰
ui->tableWidget->item( 行, 列 )->setFlags( item->flags() & (~Qt::ItemIsEditable) );
//合并单元格
ui->tableWidget->setSpan( 行, 列, 行跨度, 列跨度 );
//清除合并单元格
ui->tableWidget->clearSpans();
//返回某行列合并单元格的行数
int rowCount = ui->tableWidget->rowSpan( 行, 列 );
//获取某单元格的内容
ui->tableWidget->item( 行, 列 )->text();
//在第int行插一行
ui->tableWidget->insertRow( int );
//加int行
ui->tableWidget->setRow( int );
//删除第int行
ui->tableWidget->removeRow( int );
//当前行数
ui->tableWidget->currentRow();
//当前列数
ui->tableWidget->currentcolumn();
//总行数
ui->tableWidget->RowCount();
//总列数
ui->tableWidget->columnCount();
将( moveRow, j )的内容放到( insertRow, j )中去
ui->tableWidget->setItem( insertRow, j, ui->tableWidget->takeItem( moveRow, j ) );
将( moveRow, j )的内容放到( insertRow, j )中去
ui->tableWidget->setCellWidget( insertRow, j, ui->tableWidget->cellWidget(moveRow, j) );
//选中的单元格
QList<QTableWidgetItem *> items = ui->tableWidget->selectedItems();
//选中的范围
ui->tableWidget->selectedRanges();
//在含有垂直滚动条,添加行时,会出现QTableWidget的控件乱序的情况下,可防止控件乱序
ui->tableWidget->setVerticalScrollMode( QAbstractItemView::ScrollPerPixel );
//读取数值QComboBox(强制转化)
QComboBox *comboBox = static_cast<QComboBox*>( ui->tableWidget->cellWidget( 行,列 ) );
QString comboBoxText = comboBox->currentText();
//读取数值QTableWidgetItem(强制转化)
QTableWidgetItem *item = static_cast<QTableWidgetItem*>(ui->tableWidget->item(行,列 ));
QString itemText = item->text();
//判断单元格是否为空
if ( ui->tableWidget->item( currentRow, 1 )->text() == NULL )
注:
在对QTableWidget进行了合并单元格的背景下,对表格中的行进行上下移或者添加等改动时,此时合并单元格可能会错乱,此时的解决方法是:先清除合并,再根据实际情况重新进行合并,