QTableWidget获取CellWidget中的数据

QTableWidget中,某一列使用了控件而并非TableItem,因此需要获取到某个控件的当前值用于保存。程序示例如下:

添加CellWidget代码如下:

QComboBox *combo = new QComboBox;

QCheckBox *checkBox = new QCheckBox;

QWidget *cwidget = new QWidget;

QHBoxLayout *layout = new QHBoxLayout;

layout->setSpacing(0);

layout->setMargin(0);

layout->addWidget(checkBox);

layout->setAlignment(checkBox, Qt::AlignCenter); // 控件居中

cwidget->setLayout(layout);

combo->addItems(varlist);



if (instr_var_list->rowCount() <= Var_Max_Num)

{

instr_var_list->insertRow(instr_var_list->rowCount());

instr_var_list->setCellWidget(instr_var_list->rowCount() - 1, 2, combo);

instr_var_list->setCellWidget(instr_var_list->rowCount() - 1, 3, cwidget);

instr_var_list->setItem(var_count, 0 ,new QTableWidgetItem(QString::number(var_count + 1)));

var_count++;

}

插入之后,需要以CellWidget的形式获取某一个位置Item的信息,其中,cellWidget返回值为QWidget*。此处三个参数分别为:

table:传入的QTableWidget对象;

row:需要查找的CellWidget所在的行;

column:需要查找的CellWidget所在的列

QWidget *getCellWidget(QTableWidget *table, int row, int column)

{

return table->cellWidget(row,column);

}

获取到之后返回之后,需要将QWidget*转化为所对应的对象,如上,添加了一个QComboBox*和一个QWidget*对象,这里转化函数则是:

// 获取QComboBox的当前值

QString currentText = qobject_cast<QComboBox*>(getCellWidget(instr_var_list,i,2))->currentText();

紧接着是获取QCheckBox中的选中状态,之前上面设置CellWidget时候,并没有直接设置的QCheckBox为CellWidget,而是将QCheckBox放入的QWdiget中,因此,需要获取QCheckBox的选中状态,还需要对获取到的CellWidget做进一步的转化,转化过程如下:

QCheckBox* check = getCellWidget(instr_var_list,i,3)->findChild<QCheckBox*>();

这里通过找到CellWidget中的Wigdet*,利用其findChild函数找到获取Widget中的CheckBox子对象,即可找到所需的QCheckBox对象。其它同理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值