文章目录
- 1. 内容概述
- 2. 设置表格行数和列数
- 3. 设置表格水平表头
- 4. 设置单元格编辑状态
- 5. 设置单元格内容
- 5.1 单元格内容的基础设置操作
- 5.2 单元格内容的实用设置操作
- 6. 单元格编辑后触发cellChanged信号
- 7. 单元格添加QCombo Box部件
- 7.1 当comboBox下拉选择变化的时候触发currentIndexChanged(const QString &text)信号
- 8. 源码
1. 内容概述
控件常用操作简述,主要涵盖如下内容:
- 设置表格行数和列数
- 设置表格水平表头
- 设置单元格编辑状态
- 设置单元格内容
- 单元格编辑后触发cellChanged信号(单元格的值修改为不一样后才会触发)
- 单元格添加Combo Box部件
2. 设置表格行数和列数
表格效果
代码实现
//设置表格行数
ui->tableWidget->setRowCount(4);
//设置表格列数
ui->tableWidget->setColumnCount(2);
3. 设置表格水平表头
表格效果
代码实现
//设置水平表头
QStringList strList;
strList <<tr("参数名")<< tr("参数值");
ui->tableWidget->setHorizontalHeaderLabels(strList);
4. 设置单元格编辑状态
代码实现
QTableWidgetItem *pItem = new QTableWidgetItem("MaxNum");
pItem->setFlags(Qt::ItemIsEnabled); //设置当前单元格编辑状态为浅色不可编辑,具体详见Qt帮助文档中的枚举体,陈列了各种编辑状态
ui->tableWidget->setItem(0,0,pItem);
5. 设置单元格内容
5.1 单元格内容的基础设置操作
表格效果
代码实现
ui->tableWidget->setItem(0,0,new QTableWidgetItem(tr("MaxNum"))); //设置第0行第0列单元格内容
ui->tableWidget->setItem(0,1,new QTableWidgetItem(tr("10"))); //设置第0行第1列单元格内容
5.2 单元格内容的实用设置操作
表格效果
代码实现
//数据准备
QList<QString> strParamName;
strParamName << tr("MaxNum") << tr("MinScore")<< tr("Circularity") << tr("abc");
QList<QString> strParamValue;
strParamValue << tr("10") << tr("60")<< tr("0.5") << tr("20");
//循环设置4行2列所有单元格的内容
for (int nRow = 0; nRow < 4; nRow++)
{
int nColumn = 0;
//设置第1列内容,并且设置为不可编辑
QTableWidgetItem *pItem = new QTableWidgetItem(strParamName.at(nRow));
pItem->setFlags(Qt::ItemIsEnabled); //设置编辑状态为浅色不可编辑
ui->tableWidget->setItem(nRow,nColumn++,pItem); //设置第1列内容
//设置第2列内容
ui->tableWidget->setItem(nRow,nColumn,new QTableWidgetItem(strParamValue.at(nRow)));
}
6. 单元格编辑后触发cellChanged信号
注:当编辑的单元格的内容变化后,才会触发;如果内容一致,则不会触发。
//编辑完成后触发cellChanged信号
connect(ui->tableWidget,&QTableWidget::cellChanged,
[=](int row,int column)
{
qDebug() <<tr(" row = ") << row << tr(" column = ")<< column << ui->tableWidget->item(row,column)->text();
});
7. 单元格添加QCombo Box部件
表格效果
代码实现
//添加部件Combo Box到单元格中
QComboBox *pComboBox = new QComboBox();
pComboBox->addItem("BlackOnWhite");
pComboBox->addItem("WhiteOnBlack");
ui->tableWidget->setCellWidget(0,1,pComboBox); //添加到底0行第1列单元格中
7.1 当comboBox下拉选择变化的时候触发currentIndexChanged(const QString &text)信号
//绑定ComboBox值改变信号
void (QComboBox::*p)(const QString &str) =&QComboBox::currentIndexChanged;
connect(pComboBox,p, [=](QString str)
{
qDebug() << "str = "<<str;
});
8. 源码
#include "mywidget.h"
#include "ui_mywidget.h"
#include <QComboBox>
#include <QDebug>
MyWidget::MyWidget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::MyWidget)
{
ui->setupUi(this);
//设置行数
ui->tableWidget->setRowCount(4);
//设置列数
ui->tableWidget->setColumnCount(2);
//设置水平表头
QStringList strList;
strList <<tr("参数名")<< tr("参数值");
ui->tableWidget->setHorizontalHeaderLabels(strList);
//设置内容
// ui->tableWidget->setItem(0,0,new QTableWidgetItem(tr("MaxNum")));
//数据准备
QList<QString> strParamName;
strParamName << tr("MaxNum") << tr("MinScore")<< tr("Circularity") << tr("abc");
QList<QString> strParamValue;
strParamValue << tr("10") << tr("60")<< tr("0.5") << tr("20");
for (int nRow = 0; nRow < 4; nRow++)
{
int nColumn = 0;
//设置第1列内容,并且设置为不可编辑
QTableWidgetItem *pItem = new QTableWidgetItem(strParamName.at(nRow));
pItem->setFlags(Qt::ItemIsEnabled); //设置编辑状态为浅色不可编辑
ui->tableWidget->setItem(nRow,nColumn++,pItem);
//设置第2列内容
ui->tableWidget->setItem(nRow,nColumn,new QTableWidgetItem(strParamValue.at(nRow)));
}
//编辑完成后触发cellChanged信号
connect(ui->tableWidget,&QTableWidget::cellChanged,[=](int row,int column)
{
qDebug() <<tr(" row = ") << row << tr(" column = ")<< column << ui->tableWidget->item(row,column)->text();
});
//添加部件Combo Box到cell中
QComboBox *pComboBox = new QComboBox();
pComboBox->addItem("BlackOnWhite");
pComboBox->addItem("WhiteOnBlack");
ui->tableWidget->setCellWidget(0,1,pComboBox);
//绑定ComboBox值改变信号
void (QComboBox::*p)(const QString &str) =&QComboBox::currentIndexChanged;
connect(pComboBox,p,
[=](QString str)
{
qDebug() << "str = "<<str;
});
}
MyWidget::~MyWidget()
{
delete ui;
}