实际上,我是在表格的一列中插入组合框,并且从表中选择了一个组合框时,我想获取行值。该怎么做?
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include"QComboBox"
#include "QDebug"
#include "QModelIndexList"
#include "QTableWidgetItem"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QComboBox *s = new QComboBox;
s->insertItem(1,"INt");
ui->tableWidget->setCellWidget(1,1,s);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_tableWidget_clicked(const QModelIndex &index)
{
qDebug("ROW %d",index.row());
}
我尝试过类似的操作,但在插入组合框的地方没有给出行值,而从其他地方返回行值
答案 0 :(得分:0)
我不确定您要实现的目标,但是也许您正在寻找可以为特定行或列设置的ItemDelegate
,但不能为表中的特定元素设置。也许发布的解决方案将帮助您创建最少的可重复示例。
#include <QApplication>
#include <QComboBox>
#include <QDebug>
#include <QTableWidget>
#include <QStyledItemDelegate>
class ComboBoxDelegate : public QStyledItemDelegate{
public:
virtual QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override
{
auto s = new QComboBox(parent);
s->insertItem(1, "First");
s->insertItem(2, "Second");
return s;
}
};
int main(int argc, char** args) {
QApplication app(argc, args);
auto table = new QTableWidget;
table->setRowCount(2);
table->setColumnCount(2);
table->setItemDelegateForColumn(0, new ComboBoxDelegate);
auto s = new QComboBox;
s->insertItem(1, "First");
s->insertItem(2, "Second");
table->setCellWidget(1, 1, s);
QObject::connect(table, &QTableWidget::itemChanged, [&](QTableWidgetItem* item) {
qDebug() << item->row();
});
table->show();
app.exec();
}