我是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行,未显示新添加的数据
答案 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());