QTableWidget - setCellWidget отсутствует дополнение? - PullRequest
0 голосов
/ 15 марта 2012

Я просто пытаюсь добавить виджеты в свой виджет таблицы, и я пробую код, приведенный ниже, но при каждом запуске программы добавляется первый виджет, а остальные не добавляются. Можете ли вы помочь мне в этой ситуации?

if(req.at(index).request.CodedValue.size() > 1 )
{
    int rowNumber = -1;
    for ( int paramNumber = 0 ; paramNumber < req.at(index).request.params.size(); paramNumber++)
    {

        if(req[index].request.params[paramNumber].semantic == "DATA")
        {
            rowNumber++;
            QComboBox* reqComboBox = new QComboBox();
            QLineEdit* tableReqLineEdit = new QLineEdit();

            for ( int codedCounter = 0; codedCounter < req.at(index).request.CodedValue.at(paramNumber).trams.size(); codedCounter++)
            {
                // you should look for the subfunctions and add according to them   
                reqComboBox->addItem((req[index].request.CodedValue[paramNumber].trams[codedCounter].valueName));
                QObject::connect(reqComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(on_tableCombobox_currentIndex());
            }
            ui.tableWidget->setCellWidget(rowNumber,1,reqComboBox);

        }
    }
}

1 Ответ

1 голос
/ 15 марта 2012

Используйте qDebug, чтобы увидеть, сколько раз выполняется цикл for.Возможно, он выполняется только один раз:

#include <QDebug>
...
      rowNumber++;
      qDebug() << rowNumber;
...

Попробуйте выполнить следующее:

for (int i=0; i<ui.tableWidget->rowCount(); i++)
{
      ui.tableWidget->setCellWidget(i,1,new QLineEdit);
}

Сколько редактирования строк вы видите?

Обратите внимание, что вам следует использовать1012 * чтобы установить количество строк в вашем виджете таблицы.

...