带有setItem的QTableWidget不显示数据

时间:2019-05-07 23:58:16

标签: c++ qt

我是Qt的新手,确实需要解决问题的帮助。我目前正在为学校的实践培训项目。当我使用ui-> tableWidget-> setItem(.....)时,我被卡住了,但没有显示任何东西。尽管新行中添加了空白单元格。 我需要帮助来发现问题,并为我的英语不好对不起。谢谢

void TravelAgency::CreateBooking(char type, double price, string start, string end, long travelID, vector<string> bookingDetails)
{
.
.
.
.
ui->tableWidget->insertRow(ui->tableWidget->rowCount());
int a = ui->tableWidget->rowCount();
 QString s = QString::number(idnummer);
 ui->tableWidget->setItem(a,0, new QTableWidgetItem(s));
 s = QString::number(price);
 ui->tableWidget->setItem(a,1, new QTableWidgetItem(s));
 s = QString::number(travelID);
 ui->tableWidget->setItem(a,2, new QTableWidgetItem(s));
.
.
.
}

我的表中已经有一些数据,这些数据已使用相同的语法完美显示。我已经调试过,并确保这些变量的值正确。这些数据现在确实可以显示出来。 使用这种方法,就可以了:

   void TravelAgency::on_actionDatei_Einlesen_triggered()
    {
        ui->tableWidget->resizeColumnsToContents();       // resize columns to contents

        ui->tableWidget->clear();                         // clear all Data from Table
        ui->tableWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); // Read Only
        ui->tableWidget->setRowCount(0);   // Remove all rows
        ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"Buchungsnummer"<<"Preis"<<"Name"<<"Reise ID"); // set Columns Headers


        this->readFile();
     for(unsigned int i = 0; i < this->allBookings.size(); i ++){
                ui->tableWidget->insertRow(ui->tableWidget->rowCount());
                QString q= QString::number(this->allBookings.at(i)->getId());
                ui->tableWidget->setItem(static_cast<int>(i),0, new QTableWidgetItem(q));
                q = QString::number(this->allBookings.at(i)->getPrice());
                ui->tableWidget->setItem(static_cast<int>(i),1, new QTableWidgetItem(q));

                q  = QString::fromStdString( this->findCustomer(this->findTravel(this->allBookings.at(i)->getTravelID())->getCustomerID())->getName());


                ui->tableWidget->setItem(static_cast<int>(i),2, new QTableWidgetItem(q));
                q = QString::number(this->allBookings.at(i)->getTravelID());
                ui->tableWidget->setItem(static_cast<int>(i),3, new QTableWidgetItem(q));

        }
        ui->tableWidget->resizeColumnsToContents();
        ui->actionDatei_Einlesen->setEnabled(false);
}

在第107和108行,未显示新添加的数据

1 个答案:

答案 0 :(得分:1)

您遇到了问题:

nexty=$(date +'%Y') -d next year;
nextm=$(date +'%m') -d 'next month';

您插入一行。这增加了rowCount()的结果。 然后,将 new rowCount()用作项目应放置的行。

如果您反过来这样做,则可以:

ui->tableWidget->insertRow(ui->tableWidget->rowCount());
int a = ui->tableWidget->rowCount();

或者简单地

int a = ui->tableWidget->rowCount();
ui->tableWidget->insertRow(ui->tableWidget->rowCount());