2016-05-28 4 views
2

Я хотел бы вставить все мои данные, хранящиеся в нескольких переменных QList, в один центральный QTableWidget.QList to QTableWidget

У меня есть шесть QList<QString> переменных с фактически каждая длина которых составляет 7. С помощью этой процедуры, я хотел бы написать каждый элемент моего QList в QTableWidgetItem. Каков самый простой и эффективный способ решить эту проблему?

for (int ridx = 0; ridx < iRowCount; ridx++) 
{ 
     tmptable = resultTable[ridx]; 
     for (int cidx = 0; cidx < iColumnCount; cidx++) 
     { 
      QTableWidgetItem* item = new QTableWidgetItem(); 

      item->setText(tmptable[ridx]); 
      ui->tableWidget->setItem(ridx,cidx,item);  
     }  
} 
+0

Итак, что не так с этим кодом? – hyde

+0

Возможно, вам нужна пользовательская модель и используйте 'QTableView'? Хотя это будет в целом более сложным, поэтому выше хорошо, если вы не сталкиваетесь с проблемой производительности или чем-то еще. – hyde

+0

Я не думаю, что у меня проблемы с производительностью. Это всего лишь стандартный QTableWidget показывает все записи базы данных. Каждый столбец базы данных хранится в переменной QList . И я хотел бы показать все столбцы в один центральный QTableWidget. Этот код выше не работает должным образом, потому что я получил принудительное закрытие после запуска приложения (QList вне диапазона). Есть ли простой способ объединить все QList в один QTableWidget? – jollepe

ответ

0

У меня он работает. Это мой последний код, который добавляет все элементы каждого QList в центральный QTableWidget. Это не очень элегантное решение. Может быть, есть другое (лучшее) решение?

for (int cidx = 0; cidx < iColumnCount; cidx++) 
{ 
    if (cidx==0) 
    { 
     // Column LoginName 

     for (int ridx = 0 ; ridx < iRowCount ; ridx++) 
     { 
      QTableWidgetItem* item = new QTableWidgetItem(); 

      item->setText(ListLoginName[ridx]); 
      ui->tableWidget->setItem(ridx,cidx,item); 

     } 

    } 
    if (cidx==1) 
    { 

     //Column Lastname 
     for (int ridx = 0 ; ridx < iRowCount ; ridx++) 
     { 
      QTableWidgetItem* item = new QTableWidgetItem(); 

      item->setText(ListLastname[ridx]); 
      ui->tableWidget->setItem(ridx,cidx,item); 

     } 

    } 
    if (cidx==2) 
    { 
     // Column Firstname 
     for (int ridx = 0 ; ridx < iRowCount ; ridx++) 
     { 
      QTableWidgetItem* item = new QTableWidgetItem(); 

      item->setText(ListFirstname[ridx]); 
      ui->tableWidget->setItem(ridx,cidx,item); 

     } 

    } 
    if (cidx==3) 
    { 
     // COlumn Position 
     for (int ridx = 0 ; ridx < iRowCount ; ridx++) 
     { 
      QTableWidgetItem* item = new QTableWidgetItem(); 

      item->setText(ListPosition[ridx]); 
      ui->tableWidget->setItem(ridx,cidx,item); 

     } 

    } 
    if (cidx==4) 
    { 
     // Column Email 
     for (int ridx = 0 ; ridx < iRowCount ; ridx++) 
     { 
      QTableWidgetItem* item = new QTableWidgetItem(); 

      item->setText(ListEmail[ridx]); 
      ui->tableWidget->setItem(ridx,cidx,item); 

     } 

    } 
    if (cidx==5) 
    { 
     // Column Telephone 
     for (int ridx = 0 ; ridx < iRowCount ; ridx++) 
     { 
      QTableWidgetItem* item = new QTableWidgetItem(); 

      item->setText(ListTelephone[ridx]); 
      ui->tableWidget->setItem(ridx,cidx,item); 

     } 

    } 
} 
Смежные вопросы