Qt tablewidget добавляет указатель на строку?

#c #qt

#c #qt

Вопрос:

У меня есть программа с ~ 12 таблицами, как я могу настроить функцию для добавления строк ко всем 12 таблицам в одной функции?

т. е.

 main{

    addRow(tablewidget1);
    addRow(tablewidget2);
    // etc
}

addRow(*tablewidget){

    int row = tablewidget->rowCount();

    tablewidget->insertRow(row);

    QTableWidgetItem *item0 = new QTableWidgetItem;
    item0->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
    tablewidget->setItem(row, 0, item0);

    QTableWidgetItem *item1 = new QTableWidgetItem;
    item0->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
    tablewidget->setItem(row, 1, item1);
}
  

Комментарии:

1. Если вы добавляете одни и те же данные в одни и те же представления, вы могли бы рассмотреть возможность использования одного QStandardItemModel QTableViews вместо QTableWidget.

Ответ №1:

Если у вас есть массив или вектор со всеми вашими виджетами, вы могли бы сделать

 void main()
{
    std::vector<tablewidgets> widgets;

    // Some initialization code the widgets.

    addMyWidgets(widgets);
}

void addMyWidgets(std::vector<tablewidget>amp; widgets)
{
    for(std::vector<tablewidget>::iterator it = widgets.begin(), end = widgets.end();
        it != end;
          it)
    {
        addRow(*it);
    }
}
  

Ответ №2:

Необходимо не использовать ссылочный указатель..

 main{

addRow(tablewidget1);
addRow(tablewidget2);
// etc
  

}

addRow(QTableWidget*tablewidget){

 int row = tablewidget->rowCount();

tablewidget->insertRow(row);

QTableWidgetItem *item0 = new QTableWidgetItem;
item0->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
tablewidget->setItem(row, 0, item0);

QTableWidgetItem *item1 = new QTableWidgetItem;
item0->setFlags(Qt::ItemIsSelectable|Qt::ItemIsEnabled);
tablewidget->setItem(row, 1, item1);
  

}