该类主要是用列表的方式来显示数据。
1.添加控件
ui->tableWidget->setCellWidget(int row,int column,QWidget *widget);
2.设置列尺寸的比例
ui->tableWidget->horizontalHeader()->setSectionResizeMode(0,QHeaderView::ResizeToContents);//根据内容来定义宽度
ui->tableWidget->horizontalHeader()->setSectionResizeMode(1,QHeaderView::Stretch);//该列根据布局和其它列的根据内容定义的列的宽度自适应宽度
3.设置第一列隐藏
ui->tableWidget->verticalHeader()->hide();
4.获取文本内容
QString text = ui->tableWidget->item(int row,int column)->text();
5.设置不可编辑
ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
6、设置清空
void QTableWidget::clear() [slot]
Removes all items in the view. This will also remove all selections and headers.
//清空表格中所有内容(包含表头)。
7、清空但不包含表头
void QTableWidget::clearContents() [slot]
Removes all items not in the headers from the view. This will also remove all selections. The table dimensions stay the same.//清空表格中的内容(不包含表头)。
8、删除表格中的某行中的某列内容。
void QTableWidget::removeCellWidget(int row, int column)
Removes the widget set on the cell indicated by row and column.
9、void QTableWidget::removeColumn(int column) [slot]
//删除表格中的某列内容。
Removes the column column and all its items from the table.
10、删除表格中的某行内容
void QTableWidget::removeRow(int row) [slot] 。
Removes the row row and all its items from the table
11、删除表格中的某行和某列
QTableWidgetItem * QTableWidget::takeItem(int row, int column)
Removes the item at row and column from the table without deleting it.
12、删除表格中的水平标题头
QTableWidgetItem * QTableWidget::takeHorizontalHeaderItem(int column)
Removes the horizontal header item at column from the header without deleting it.
13、删除表格中的垂直标题头
QTableWidgetItem * QTableWidget::takeVerticalHeaderItem(int row)
Removes the vertical header item at row from the header without deleting it.
14、添加多个控件,如何响应相似的操作
for循环,按照1添加控件;
for(int i= - ;i<5;i++)
{
//创建一个QPushButton控件
QPushButton *pushButton_ = new QPushButton();
//设置按键显示文字
pushButton_->setText("点击");
//建立信号槽
connect(pushButton_, SIGNAL(clicked()), this, SLOT(clickButton()));
//将QPushButton控件设置到QTableWidget中
ui->tableWidget->setCellWidget(i, 1 ,pushButton_);
}
void MyTableWidget::clickButton()
{
QPushButton *pushButton_ = dynamic_cast<QPushButton*>(this->sender());
if(NULL == pushButton_)
{
return;
}
int x = pushButton_->frameGeometry().x();
int y = pushButton_->frameGeometry().y();
QModelIndex index = ui->tableWidget->indexAt(QPoint(x, y));
int row = index.row();
int column = index.column();
//有可能只需要行 不需要列 根据自己的情况来使用
qDebug() << "选择第几行:" << row << "选择第几列:" << column;
//接下来自定义要处理的内容
//。。。。。。
}
15、设置居中显示
ui->tableWidget->horizontalHeader()->setDefaultAlignment(Qt::AlignHCenter);//表头字体居中
16、设置Item居中显示
//让tableWidget内容中的每个元素居中
for (int i=0;i<5;i++)
{
for (int j=0;j<8;j++)
{
ui->tableWidget->item(i,j)->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
}
}
17、合并单元格:
tableWidget->setSpan(0, 0, 3, 1) # 其参数为: 要改变单元格的1行数、2列数,要合并的3行数、4列数
18、设置单元格的大小
首先,可以指定某个行或者列的大小
tableWidget->setColumnWidth(3,200);
tableWidget->setRowHeight(3,60);
还可以将行和列的大小设为与内容相匹配
tableWidget->resizeColumnsToContents();
tableWidget->resizeRowsToContents();
19、 获得单击单元格的内容
通过实现 itemClicked (QTableWidgetItem *) 信号的槽函数,就可以获得鼠标单击到的单元格指针,进而获得其中的文字信息
connect(tableWidget,SIGNAL(itemClicked(QTreeWidgetItem*,int)),this, SLOT( getItem(QTreeWidgetItem*,int)) );
20、 获得双击单元格的内容
通过实现 itemDoubleClicked (QTableWidgetItem *) 信号的槽函数,就可以获得鼠标单击到的单元格指针,进而获得其中的文字信息
connect(tableWidget,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)),this, SLOT( getItem(QTreeWidgetItem*,int)) );
21、背景色交替
ui->tabWidget->setAlternatingRowColors(true);
ui->tabWidget->setStyleSheet("alternate-background-color:red;background:white;color:#6b6d7b;);
Note:语句顺序需要注意,顺序错了达不到效果的
22.添加一行数据
int rowIndex = m_pAttrbuteList->rowCount();
tableWidget->setRowCount(rowIndex + 1);//总行数增加1
void addItemContent(int row, int column, QString content)
{
QTableWidgetItem *item = new QTableWidgetItem (content);
table->setItem(row, column, item);
}
23.获取选中行的内容
QList<QTableWidgetItem*> items = ui->tableWidget->selectedItems();
int count = items.count();
for(int i = 0; i < count; i++)
{
int row = ui->tableWidget->row(items.at(i));
QTableWidgetItem *item = items.at(i);
QString text = item->text(); //获取内容
}
24.
获取选中的行
QList<QTableWidgetSelectionRange>ranges=ui->tableWidget->selectedRanges();
int count=ranges.count();
for(int i=0;i<count;i++)
{
int topRow=ranges.at(i).topRow();
int bottomRow=ranges.at(i).bottomRow();
for(int j=topRow;j<=bottomRow;j++)
{
qDebug()<<"selectRow"<<j;
}
}
25.滚动条
ui->tableWidget->scrollToItem(ui->tableWidget(row,1));//滚动到当前位置
ui->tableWidget->scrollToBottom();
ui->tableWidget->scrollToTop();