TableWidget对应关键的槽函数值
void | clear():清空表格中的所有内容,包括对应表头 |
void | clearContents():清空表中的内容信息 |
void | insertColumn(int column):将空列插入到表中的列处 |
void | insertRow(int row):在表中的行处插入一个空行 |
void | removeColumn(int column):删除表中的一列数据 |
void | removeRow(int row):删除表中的一行数据 |
void | scrollToItem(const QTableWidgetItem *item, QAbstractItemView::ScrollHint hint = EnsureVisible) 滚动视图以确保项目可见 |
TableWidget对应关键的信号函数
void | cellActivated(int row, int column):单元格被激活 |
void | cellChanged(int row, int column):单元格改变 |
void | cellClicked(int row, int column):单元格被点击 |
void | cellDoubleClicked(int row, int column):双击单元格 |
void | cellEntered(int row, int column):entry键入 |
void | cellPressed(int row, int column):点击之后 |
void | currentCellChanged(int currentRow, int currentColumn, int previousRow, int previousColumn) 当前的cell改变之后 |
void | currentItemChanged(QTableWidgetItem *current, QTableWidgetItem *previous) 当前的item改变 |
void | itemActivated(QTableWidgetItem *item) 当item激活 |
void | itemChanged(QTableWidgetItem *item) 当item改变 |
void | itemClicked(QTableWidgetItem *item) 当item点击 |
void | itemDoubleClicked(QTableWidgetItem *item) |
void | itemEntered(QTableWidgetItem *item) |
void | itemPressed(QTableWidgetItem *item) |
void | itemSelectionChanged() |
1,本人在Qt中设置了如下的UI界面,进行QT TableWidget的学习
2,TableWidget进行初始化
tableWidget = new QTableWidget(this);
// 设置对应的行数
tableWidget->setRowCount(10);
// 设置对应的列数
ui->tableWidget->setColumnCount(4);
// 设置对应的标有的内容
QStringList horizonHeadList;
horizonHeadList<<"姓名";
horizonHeadList<<"性别";
horizonHeadList<<"年龄";
horizonHeadList<<"籍贯";
// 设置对应的表头信息
ui->tableWidget->setHorizontalHeaderLabels(horizonHeadList);
// 表头自由变化
ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
3,TableWidget追加一行内容
void myWidget::appendOneRow(QString name,QString gender,int age,QString provice){
// 当前的行数
int count = ui->tableWidget->rowCount();
// 对设置行数为1
ui->tableWidget->setRowCount(count+1);
// 增加对应的Item
QTableWidgetItem * names = new QTableWidgetItem(name);
// 文中的对其显示
names->setTextAlignment(Qt::AlignCenter);
QTableWidgetItem * genders = new QTableWidgetItem(gender);
genders->setTextAlignment(Qt::AlignCenter);
QTableWidgetItem * ages = new QTableWidgetItem(QString::number(age));
ages->setTextAlignment(Qt::AlignCenter);
QTableWidgetItem * provices = new QTableWidgetItem(provice);
provices->setTextAlignment(Qt::AlignCenter);
// 设置对应的row的值
ui->tableWidget->setItem(count,0,names);
ui->tableWidget->setItem(count,1,genders);
ui->tableWidget->setItem(count,2,ages);
ui->tableWidget->setItem(count,3,provices);
}
4,TableWidget在行row中的处增加一行数据
void myWidget::insertOneRow(int count, QString name, QString gender, int age, QString provinces)
{
ui->tableWidget->insertRow(count);
QTableWidgetItem * names = new QTableWidgetItem(name);
names->setTextAlignment(Qt::AlignCenter);
QTableWidgetItem * genders = new QTableWidgetItem(gender);
genders->setTextAlignment(Qt::AlignCenter);
QTableWidgetItem * ages = new QTableWidgetItem(QString::number(age));
ages->setTextAlignment(Qt::AlignCenter);
QTableWidgetItem * provincess = new QTableWidgetItem(provinces);
provincess->setTextAlignment(Qt::AlignCenter);
ui->tableWidget->setItem(count,0,names);
ui->tableWidget->setItem(count,1,genders);
ui->tableWidget->setItem(count,2,ages);
ui->tableWidget->setItem(count,3,provincess);
}
5.TableWidget在删除指定row中的处的一行数据
void myWidget::on_pushButton_4_clicked()
{
int current_row = ui->tableWidget->currentRow();
ui->tableWidget->removeRow(current_row);
}
6.TableWidget修改表中的内容
void myWidget::on_pushButton_5_clicked()
{
QString name = ui->lineEdit->text();
QString gender = ui->lineEdit_2->text();
int age = ui->lineEdit_3->text().toInt();
QString province = ui->lineEdit_4->text();
QTableWidgetItem * names = new QTableWidgetItem(name);
names->setTextAlignment(Qt::AlignCenter);
QTableWidgetItem * genders = new QTableWidgetItem(gender);
genders->setTextAlignment(Qt::AlignCenter);
QTableWidgetItem * ages = new QTableWidgetItem(QString::number(age));
ages->setTextAlignment(Qt::AlignCenter);
QTableWidgetItem * provincess = new QTableWidgetItem(province);
provincess->setTextAlignment(Qt::AlignCenter);
int count = ui->tableWidget->currentRow();
ui->tableWidget->setItem(count,0,names);
ui->tableWidget->setItem(count,1,genders);
ui->tableWidget->setItem(count,2,ages);
ui->tableWidget->setItem(count,3,provincess);
}
7,TableWidget在输入行中的内容添加到表中
void myWidget::on_pushButton_3_clicked()
{
QString name = ui->lineEdit->text();
QString gender = ui->lineEdit_2->text();
int age = ui->lineEdit_3->text().toInt();
QString province = ui->lineEdit_4->text();
int currentrow = ui->tableWidget->currentRow();
insertOneRow(currentrow,name,gender,age,province);
}
8,TableWidget将表中的指定的item中的数据添加到显示行中
void myWidget::onItemclicked(QTableWidgetItem *item)
{
int rows =item->row();
QString name = ui->tableWidget->item(rows,0)->text();
QString gender = ui->tableWidget->item(rows,1)->text();
QString age = ui->tableWidget->item(rows,2)->text();
QString province = ui->tableWidget->item(rows,3)->text();
ui->lineEdit->setText(name);
ui->lineEdit_2->setText(gender);
ui->lineEdit_3->setText(age);
ui->lineEdit_4->setText(province);
}
9,TableWidget指定选择是选择一行内容还是Cell
SingleSelection | 1 | 当用户选择一个项目时,任何已选择的项目都将被取消选择。用户可以通过在单击所选项目时按 Ctrl 键来取消选择所选项目。 |
ContiguousSelection | 4 | 当用户以常规方式选择项目时,将清除所选内容并选中新项目。但是,如果用户在单击项目时按 Shift 键,则当前项目和单击的项目之间的所有项目都将处于选中或取消选中状态,具体取决于单击项目的状态。 |
ExtendedSelection | 3 | 当用户以常规方式选择项目时,将清除所选内容并选中新项目。但是,如果用户在单击某个项目时按 Ctrl 键,则单击的项目将切换,而所有其他项目保持不变。如果用户在单击某个项目时按 Shift 键,则当前项目和单击的项目之间的所有项目都将被选中或取消选择,具体取决于所单击项目的状态。通过将鼠标拖动到多个项目上,可以选择多个项目。 |
MultiSelection | 2 | 当用户以常规方式选择某个项目时,该项目的选择状态将切换,其他项目将保持独立状态。通过将鼠标拖到多个项目上,可以切换它们。 |
NoSelection | 0 | 无法选择项目。 |
QAbstractItemView::SelectItems | 0 | 选择单个项目。 |
QAbstractItemView::SelectRows | 1 | 仅选择行。 |
QAbstractItemView::SelectColumns | 2 | 仅选择列。 |
void myWidget::onSelectionRadioButtonClicked(){
int id = mybuttonGroup->checkedId();
if(id==0){
// 属性控制用户是否可以选择一个或多个项目,以及在多项目选择中,选择是否必须是连续的项目范围
ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
// 此属性保存是否根据单个项目、行或列进行选择。
ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectItems);
}else{
ui->tableWidget->setSelectionMode(QAbstractItemView::SingleSelection);
ui->tableWidget->setSelectionBehavior(QAbstractItemView::SelectRows);
}
}
10,行头或者列头是否进行显示
if(ui->tableWidget->horizontalHeader()->isHidden()){
ui->checkBox->setChecked(false);
}else {
ui->checkBox->setChecked(true);
}
connect(ui->checkBox,&QCheckBox::stateChanged,this,[=](int state){
if(state==Qt::Checked){
// 头的显示
ui->tableWidget->horizontalHeader()->show();
}else{
// 不显示
ui->tableWidget->horizontalHeader()->hide();
}
});
// 列头进行显示
if(ui->tableWidget->verticalHeader()->isHidden()){
ui->checkBox_2->setChecked(false);
}else {
ui->checkBox_2->setChecked(true);
}
connect(ui->checkBox_2,&QCheckBox::stateChanged,this,[=](int state){
if(state==Qt::Checked){
ui->tableWidget->verticalHeader()->show();
}else{
ui->tableWidget->verticalHeader()->hide();
}
});
11,改变背景页颜色
if(ui->tableWidget->alternatingRowColors()){
ui->checkBox_3->setChecked(true);
}else{
ui->checkBox_3->setChecked(true);
}
connect(ui->checkBox_3,&QCheckBox::stateChanged,this,[=](int state){
if(state==Qt::Checked){
ui->tableWidget->setAlternatingRowColors(true);
}else{
ui->tableWidget->setAlternatingRowColors(false);
}
});
12,是否是可以编辑
// 单元格可编辑的
int triggle = ui->tableWidget->editTriggers();
if(triggle==QAbstractItemView::NoEditTriggers){
ui->checkBox_4->setChecked(false);
}else{
ui->checkBox_4->setChecked(false);
}
connect(ui->checkBox_4,&QCheckBox::stateChanged,this,[=](int state){
if(state==Qt::Checked){
ui->tableWidget->setEditTriggers(QAbstractItemView::DoubleClicked|
QAbstractItemView::SelectedClicked|
QAbstractItemView::EditKeyPressed);
}else{
ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers);
}
});
12,结果是否进行显示