Aslan
5th June 2011, 21:23
I've been trying for several hours now to get some QTableWidgetItems to display.
I have five QTableWidgets which I use to display highscores on a per-age basis.
Unfortunately my QTableWidgetItems seem to be added to the QTableWidget (as you can see from the line numbers displayed in the screenshot) yet I never get the text of the QTableWidgetItem to display (in the displayBestPerAge() section)
The Query to the database works fine. Even if I use simple QStrings in the new QTableWidgetItem() I still see nothing displayed.
Slowly running out of ideas. Does anyone have an idea what I might be doing wrong?
HighScore::HighScore(QWidget *parent) :
QWidget(parent),
ui(new Ui::HighScore)
{
ui->setupUi(this);
ageTbl=new QList<QTableWidget *>;
ageTbl->append(ui->tblAge6);
ageTbl->append(ui->tblAge7);
ageTbl->append(ui->tblAge8);
ageTbl->append(ui->tblAge9);
ageTbl->append(ui->tblAge10);
displayBestPerAge();
}
void HighScore::displayBestPerAge()
{
QSqlQuery query;
QString queryString;
QString formatString;
QList<int> alreadyDisplayed;
int rowCnt=0;
for (int i=6;i<11;i++) {
rowCnt=0;
int index=i-6;
alreadyDisplayed.clear();
queryString=QString("select startaufstellung.startNo,teilnehmer.tlnVorname, teilnehmer.tlnName,rundenzeiten.rundenzeit,teilneh mer.tlnID from rundenzeiten, \
teilnehmer,startaufstellung where rundenzeiten.tlnID=teilnehmer.tlnID AND startaufstellung.tlnID=teilnehmer.tlnID AND teilnehmer.tlnAlter='%1' \
order by rundenzeiten.runde, rundenzeiten.rundenzeit ").arg(i);
query.exec(queryString);
int platz=1;
while (query.next()) {
QString startNummer= query.value(0).toString() ;
QString vorName=query.value(1).toString() ;
QString name=query.value(2).toString() ;
QString zeit= ms2dispVal(query.value(3).toInt());
int id=query.value(4).toInt();
qDebug()<<"Checking ID" << id;
if (!alreadyDisplayed.contains(id)) {
alreadyDisplayed.append(id);
platz++;
//retrieve last Row and add another to end of table
int row=ageTbl->at(index)->rowCount();
qDebug() << "Row: " <<row;
ageTbl->at(index)->insertRow(row);
//
QTableWidgetItem *platzItem=new QTableWidgetItem(QString::number(platz));
qDebug() << "Platz " << QString::number(platz);
ageTbl->at(index)->setItem(row,0,platzItem);
//
QTableWidgetItem *nameItem=new QTableWidgetItem(QString(vorName % " " % name));
qDebug() << "Name: " << vorName % " " % name;
ageTbl->at(index)->setItem(row,1,nameItem);
//
QTableWidgetItem *startNoItem=new QTableWidgetItem(startNummer);
ageTbl->at(index)->setItem(row,2,startNoItem);
//
QTableWidgetItem *zeitItem=new QTableWidgetItem(zeit);
ageTbl->at(index)->setItem(row,3,zeitItem);
} else {
qDebug() << "ID " << id << "Already stored";
}
}
}
}
6521
I have five QTableWidgets which I use to display highscores on a per-age basis.
Unfortunately my QTableWidgetItems seem to be added to the QTableWidget (as you can see from the line numbers displayed in the screenshot) yet I never get the text of the QTableWidgetItem to display (in the displayBestPerAge() section)
The Query to the database works fine. Even if I use simple QStrings in the new QTableWidgetItem() I still see nothing displayed.
Slowly running out of ideas. Does anyone have an idea what I might be doing wrong?
HighScore::HighScore(QWidget *parent) :
QWidget(parent),
ui(new Ui::HighScore)
{
ui->setupUi(this);
ageTbl=new QList<QTableWidget *>;
ageTbl->append(ui->tblAge6);
ageTbl->append(ui->tblAge7);
ageTbl->append(ui->tblAge8);
ageTbl->append(ui->tblAge9);
ageTbl->append(ui->tblAge10);
displayBestPerAge();
}
void HighScore::displayBestPerAge()
{
QSqlQuery query;
QString queryString;
QString formatString;
QList<int> alreadyDisplayed;
int rowCnt=0;
for (int i=6;i<11;i++) {
rowCnt=0;
int index=i-6;
alreadyDisplayed.clear();
queryString=QString("select startaufstellung.startNo,teilnehmer.tlnVorname, teilnehmer.tlnName,rundenzeiten.rundenzeit,teilneh mer.tlnID from rundenzeiten, \
teilnehmer,startaufstellung where rundenzeiten.tlnID=teilnehmer.tlnID AND startaufstellung.tlnID=teilnehmer.tlnID AND teilnehmer.tlnAlter='%1' \
order by rundenzeiten.runde, rundenzeiten.rundenzeit ").arg(i);
query.exec(queryString);
int platz=1;
while (query.next()) {
QString startNummer= query.value(0).toString() ;
QString vorName=query.value(1).toString() ;
QString name=query.value(2).toString() ;
QString zeit= ms2dispVal(query.value(3).toInt());
int id=query.value(4).toInt();
qDebug()<<"Checking ID" << id;
if (!alreadyDisplayed.contains(id)) {
alreadyDisplayed.append(id);
platz++;
//retrieve last Row and add another to end of table
int row=ageTbl->at(index)->rowCount();
qDebug() << "Row: " <<row;
ageTbl->at(index)->insertRow(row);
//
QTableWidgetItem *platzItem=new QTableWidgetItem(QString::number(platz));
qDebug() << "Platz " << QString::number(platz);
ageTbl->at(index)->setItem(row,0,platzItem);
//
QTableWidgetItem *nameItem=new QTableWidgetItem(QString(vorName % " " % name));
qDebug() << "Name: " << vorName % " " % name;
ageTbl->at(index)->setItem(row,1,nameItem);
//
QTableWidgetItem *startNoItem=new QTableWidgetItem(startNummer);
ageTbl->at(index)->setItem(row,2,startNoItem);
//
QTableWidgetItem *zeitItem=new QTableWidgetItem(zeit);
ageTbl->at(index)->setItem(row,3,zeitItem);
} else {
qDebug() << "ID " << id << "Already stored";
}
}
}
}
6521