Qt — Доступ к флажку в таблице

У меня есть таблица, и каждая строка в таблице имеет флажок в своем первом столбце. Мне нужно сделать так, чтобы я мог определить, какие флажки отмечены, и удалить эти строки при нажатии кнопки.

QWidget * chkWidget = new QWidget();
QHBoxLayout *center = new QHBoxLayout();
center->setAlignment( Qt::AlignCenter );
center->addWidget( new QCheckBox );
chkWidget->setLayout( center );
ui->data_table->setCellWidget(rowCount,0, chkWidget);

Было ли это сделано правильно? Если да, то как мне получить доступ к флажкам в каждой строке?

0

Решение

Я говорю о QTableWidget. Вы можете использовать QList. Вы сохраняете свой QCheckBox в этот QList и используете его, когда есть некоторые изменения.

Может быть, вы должны проверить документацию

Вот решение. Я не могу запустить его в данный момент, поэтому, пожалуйста, скажите мне, если это работает. Пожалуйста, подтвердите значение строки. Я не уверен, если это возможно, эта строка может иметь значение -1 при удалении последней строки;)

#include "TestTableWidget.h"#include "ui_TestTableWidget.h"
TestTableWidget::TestTableWidget(QWidget *parent) : QMainWindow(parent), ui(new Ui::TestTableWidget)
{
ui->setupUi(this);

tableWidget = new QTableWidget(this);
tableWidget->setColumnCount(1); // Just an example

ui->gridLayout->addWidget(tableWidget);

connect(tableWidget, SIGNAL(itemSelectionChanged()), this, SLOT(slotChange()));

for(int i = 1; i < 10; i++)
{
addRow("Row " + QString::number(i));
}
}

TestTableWidget::~TestTableWidget()
{
delete ui;
}

void TestTableWidget::addRow(QString text)
{
int row = tableWidget->rowCount();
qDebug() << "Current row count is " + QString::number(row);

// Add new one
QTableWidgetItem *item = new QTableWidgetItem(text);
tableWidget->insertRow(row);
tableWidget->setItem(row, 0, item);

// Add item to our list
}

void TestTableWidget::slotChange()
{
int row = tableWidget->currentRow();
qDebug() << "Change in table. Current row-index: " + QString::number(row);
// This value is zero-based, so you can use it in our list
}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]