QTableWidget是QT对话框设计中常用的显示数据表格的控件。
QTableWidget继承于类QTableView,所以在学习QTableWidget之前可以先看一下QTableWidget,他们两者的区别是:QTableView可以使用自定义的数据模型来显示内容(也就意味着使用时先要通过setModel来绑定数据源),而QTableWidget则只能使用标准的数据模型。使用QTableWidget就离不开QTableWidgetItem。QTableWidgetItem用来表示表格中的其中一个单元格,整个表格都需要用逐个单元格对象QTableWidgetItem构建起来。
ui.qtablewidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
/*设置表格为整行选中*/
ui.qtablewidget->setSelectionBehavior(QAbstractItemView::SelectRows);
/*设置允许多个选中*/
ui.qtablewidget->setSelectionMode(QAbstractItemView::ExtendedSelection);
ui.qtablewidget->verticalHeader()->setVisible(true);
ui.qtablewidget->horizontalHeader()->setVisible(false);
ui.qtablewidget->item(0, 0)->setTextAlignment(Qt::AlignHCenter);
ui.qtablewidget->item(1, 0)->setBackgroundColor(QColor(0,60,10));
ui.qtablewidget->item(1, 0)->setTextColor(QColor(200,111,100));
ui.qtablewidget->item(1, 0)->setFont(QFont("Helvetica"));
ui.qtablewidget->setItem(1, 0, new QTableWidgetItem(str));
QString str =ui.qtablewidget->item(0, 0)->data(Qt::DisplayRole).toString();
QComboBox *comBox = new QComboBox();
comBox->addItem("F");
comBox->addItem("M");
ui.qtablewidget->setCellWidget(0,3,comBox);
//合并单元格的效果
ui.qtablewidget->setSpan(2, 2, 3, 2);
//第一个参数:要改变的单元格行数
//第二个参数:要改变的单元格列数
//第三个参数:需要合并的行数
//第四个参数:需要合并的列数
ui.qtablewidget->setItem(3, 2, new QTableWidgetItem(QIcon("images/music.png"), "Music"));
ui.qtablewidget->setShowGrid(true);//显示表格线
ui.qtablewidget->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);//去掉水平滚动条
//初始化界面
QStringList HStrList;
HStrList.push_back(QString("name"));
HStrList.push_back(QString("id"));
HStrList.push_back(QString("age"));
HStrList.push_back(QString("sex"));
HStrList.push_back(QString("department"));
//设置行列数(只有列存在的前提下,才可以设置列标签)
int HlableCnt = HStrList.count();
ui.qtablewidget->setRowCount(10);
ui.qtablewidget->setColumnCount(HlableCnt);
//设置列标签
ui.qtablewidget->setHorizontalHeaderLabels(HStrList);
ui.qtablewidget->resizeColumnsToContents();
ui.qtablewidget->resizeRowsToContents();
ui.qtablewidget->setFont(font); //设置字体
QString strText = ui.qtablewidget->item(0, 0)->text();
void QTableWidget::clear () [slot]//清空掉表格内所有内容,包括标题头
void QTableWidget::clearContents () [slot]//这个清空所有内容不包括标题头
void QTableWidget::removeColumn ( int column ) [slot]//这个是删除一列,而不是清空表格
void QTableWidget::removeRow ( int row ) [slot]//这个是删除一行,不是清空一行
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
ui->tableWidget->setRowCount(10);
ui->tableWidget->setColumnCount(5);
ui->tableWidget->setWindowTitle("QTableWidget & Item");
ui->tableWidget->resize(400, 300); //设置表格
QStringList header;
header<<"Name"<<"Age"; //表头
ui->tableWidget->setHorizontalHeaderLabels(header);
ui->tableWidget->setItem(0,0,new QTableWidgetItem("张飞"));
ui->tableWidget->setItem(1,0,new QTableWidgetItem("关羽"));
ui->tableWidget->setItem(2,0,new QTableWidgetItem("吕布"));
ui->tableWidget->setItem(0,1,new QTableWidgetItem("35"));
ui->tableWidget->setItem(1,1,new QTableWidgetItem("36"));
ui->tableWidget->setItem(2,1,new QTableWidgetItem("32"));
ui->tableWidget->show();
}
Widget::~Widget()
{
delete ui;
}
在ui文件中拉了一个Tablewidget控件。效果: