gpt4 book ai didi

c++ - QTableWidget with setItem 不显示数据

转载 作者:行者123 更新时间:2023-11-28 04:18:26 29 4
gpt4 key购买 nike

我是 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行,没有显示新添加的数据

最佳答案

这是你的问题:

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

您插入一行。这增加了 rowCount() 的结果。然后使用 new rowCount() 作为项目所在的行。

如果你反过来做,它会起作用:

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

或者只是

int a = ui->tableWidget->rowCount();
ui->tableWidget->setRowCount(a+1);
// ...

关于c++ - QTableWidget with setItem 不显示数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56031855/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com