#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
setFixedWidth(400);
setFixedHeight(250);
initUI();
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::initUI()
{
tableWidget = new QTableWidget(this);
tableWidget->setFixedSize(350, 200);
tableWidget->setRowCount(5);
tableWidget->setColumnCount(3);
QStringList headerLabels;
headerLabels << "col1" << "col2" << "col3" ;
tableWidget->setHorizontalHeaderLabels(headerLabels);//用QStringList初始化水平表头
setContextMenuPolicy(Qt::CustomContextMenu);
for (int row = 0; row < tableWidget->rowCount(); ++row)//遍历所有行,单元格初始化
{
tableWidget->setItem(row, 0, new QTableWidgetItem(""));//初始化第1列
tableWidget->setItem(row, 1, new QTableWidgetItem(""));//初始化第2列
tableWidget->setItem(row, 2, new QTableWidgetItem(""));//初始化第3列
QComboBox *comboBox = new QComboBox();
comboBox->addItem("选项1");
comboBox->addItem("选项2");
comboBox->addItem("选项3");
QTableWidgetItem *item0 = tableWidget->item(row, 0);
item0->setText(QString::number(row));
QTableWidgetItem *item1 = tableWidget->item(row, 1);
item1->setText(QString::number(row+5));
tableWidget->setCellWidget(row, 2, comboBox);//将第2列的单元格设置combox选项
// 连接信号和槽,并使用Lambda表达式来传递参数
connect(comboBox,
QOverload<int>::of(&QComboBox::currentIndexChanged),
this,
[this, comboBox, row](int index)//本行及下面的几行直到 } 是lambda函数范围
{ // 获取第2列的QTableWidgetItem对象作为参数
QTableWidgetItem *item = tableWidget->item(row, 2);
if (item)//判断非空
tableChange(item);
else
qDebug() << "获取QTableWidgetItem时发生错误";
}
);
}
tableWidget->show();
connect(tableWidget, &QTableWidget::itemChanged, this, &MainWindow::tableChange, Qt::UniqueConnection);
}
void MainWindow::tableChange(QTableWidgetItem *item)
{
int row = item->row();
int column = item->column();
QString str ;
if (column==2)
{
QComboBox *comboBox = qobject_cast<QComboBox*>(tableWidget->cellWidget(row, 2));
str=comboBox->currentText();
}
else
str=item->text();
// 打印输出已改变内容的行和列
qDebug() << "Item changed at row:" << row << ",column:" << column<<",value:" << str;
}
演示了 QTableWidget的初始化以及单元格值改变时响应槽函数,打印单元格 并且,最后列不一样,是combobox
需积分: 5 199 浏览量
2024-05-23
14:57:23
上传
评论
收藏 1.38MB RAR 举报
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
![avatar-vip](https://csdnimg.cn/release/downloadcmsfe/public/img/user-vip.1c89f3c5.png)
weixin_39926429
- 粉丝: 611
- 资源: 59
最新资源
- pod-tomcat.yaml
- This module implements the Requests API.
- Delphi 12 控件之unidac-10.2.1-d29pro.exe
- keyword.other.package.java
- Apple//DTD PLIST 1.0//EN
- comment.block.documentation.rust
- there is no way to distinguish perfectly
- 数据库管理工具:dbeaver-ce-24.0.2-x86-64-setup.exe
- Objective-C.tmLanguage
- 数据库管理工具:dbeaver-ce-24.0.2-macos-x86-64.dmg
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)