#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);
}