QTableWidget常用方法的收集
1.设置列表头
tableWidget->setColumnCount(3);
tableWidget->setHorizontalHeaderLabels(QStringList() << "第一列" << "第二列" << "第三列");
2.设置列宽
tableWidget->setColumnWidth(0, 100);
tableWidget->setColumnWidth(1, 100);
tableWidget->setColumnWidth(2, 100);
3.插入行
ui->tableWidget->insertRow(line);
ui->tableWidget->setItem( line, 0, new QTableWidgetItem("1"));
ui->tableWidget->setItem( line, 1, new QTableWidgetItem("2"));
ui->tableWidget->setItem( line, 2, new QTableWidgetItem("3"));
4.滚动条保持最下方
tableWidget->scrollToBottom();
5.自适应行、列
//自适应行
tableWidget->verticalHeader()->setSectionResizeMode(QHeaderView::Stretch);
//自适应列
tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
//自适应列头内容填充
tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
//最后一列填充剩余宽度
tableWidget->horizontalHeader()->setStretchLastSection(true);
6.禁用水平滚动条
tableWidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
//隐藏
tableWidget->horizontalScrollBar()->hide();
7.插入控件和获取
// row行column列插入widget控件
tableWidget->setCellWidget(row, column, widget);
//获取控件, 获取后再根据类型强转为自己插入的控件
QWidget *w = tableWidget->cellWidget(row, column);
8.设置无焦点
tableWidget->setFocusPolicy(Qt::NoFocus);
9.某项不能点击
tableWidget->item(row, column)->setFlags(Qt::ItemIsSelectable);
10.添加复选框
tableWidget->item(row, column)->setCheckState(Qt::Unchecked);
11.鼠标拖动效果
QScroller *sc = QScroller::scroller(tableWidget);
QScroller::ScrollerGestureType gesture = QScroller::LeftMouseButtonGesture;
sc->grabGesture(tableWidget, gesture);
12.设置选中策略
//选中行的模式
tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
//单选
tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
13.样式表示例
QTableWidget
{
gridline-color: black;
selection-color: #D4237A;
color:#D4237A;
selection-background-color: #595a5c;
font: 12pt "黑体";
}
14.复制行
void copyRow(QTableWidget *table, int from, int to)
{
int colCount = table->columnCount();
for(int col=0; col<colCount; col++)
{
QString text = table->item(from, col)->text();
QTableWidgetItem *item = new QTableWidgetItem;
item->setText(text);
table->setItem(to, col, item);
}
}
15.QTableWidget移动行
void moveRow(QTableWidget *table, int from, int to)
{
if( table == nullptr )
{
return;
}
if( from == to )
{
return;
}
if( from < 0 || to < 0 )
{
return;
}
int rowCount = table->rowCount();
if( from >= rowCount || to >= rowCount )
{
return;
}
int curCol = 0;
curCol = table->currentColumn();
QTableWidgetItem *curItem = table->currentItem();
if( nullptr != curItem )
{
curCol = curItem->column();
}
int fromRow = from;
int insertRow = to;
if( to < from )
{
fromRow = from + 1;
table->insertRow(to);
}
else
{
insertRow = to + 1;
table->insertRow(insertRow);
}
this->copyRow( table, fromRow, insertRow );
table->removeRow(fromRow);
table->selectRow( insertRow );
table->setCurrentCell(to, curCol);
}