2013-02-13 2 views
0

У меня есть таблица, и каждая строка в таблице имеет флажок в ее первом столбце. Мне нужно сделать так, чтобы я мог определить, какие флажки отмечены, и удалять эти строки при нажатии кнопки.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); 

Это было сделано правильно? Если да, то каким образом я могу получить доступ к ячейкам в каждой строке?

ответ

1

Я говорю о QTableWidget. Вы можете использовать QList.You сохранить 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 
} 
Смежные вопросы