Alles rund um die Programmierung mit Qt
paule22
Beiträge: 18 Registriert: 1. August 2010 21:25
Beitrag
von paule22 » 1. August 2010 21:43
hallo,
ich habe folgenden code:
Code: Alles auswählen
class TBrowseGrid {
Q_OBJECT
public:
TBrowseGrid(QWidget *parent = 0);
QTableWidget *bt;
int Top,Left,Width,Height;
TDataSource *datasource;
void setdata(void);
};
TBrowseGrid::TBrowseGrid(QWidget *parent)
{
bt = new QTableWidget(7,7,parent);
bt->setGeometry(
42,
260,
320,
320);
bt->show();
}
void TBrowseGrid::setdata(void)
{
char fieldname[200];
int pos = 0;
cout << "this" << endl;
IBPP::Transaction t = IBPP::TransactionFactory(this->datasource->database->db);
cout << datasource->sql << endl;
t->Start();
IBPP::Statement st = IBPP::StatementFactory(datasource->database->db, t);
st->Execute(datasource->sql);
QTableWidgetItem *colitem[10];
for (pos = 1; pos < 10; pos++) colitem[pos] = NULL;
cout << "start" << endl;
//QStringList hheader;
for (pos = 1; pos < st->Columns(); pos++)
{
sprintf(fieldname,"%s", st->ColumnName(pos));
cout << fieldname << endl;
//hheader << fieldname;
//bt->setHorizontalHeaderLabels(hheader);
bt->setHorizontalHeaderItem(pos, bt->item(0,pos));
}
t->Commit();
}
fieldname wird bei cout 2 ausgaben liefern - die felder einer tabelle.
leider kann ich keine spalten des QTableWidget Objekts ändern, was mache ich falsch?
das grid wird angezeigt
Gruß
Jens
Christian81
Beiträge: 7319 Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:
Beitrag
von Christian81 » 2. August 2010 06:33
paule22 hat geschrieben:
leider kann ich keine spalten des QTableWidget Objekts ändern, was mache ich falsch?
Was genau geht nicht? Werde nicht die korrekten Werte angezeigt?
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
paule22
Beiträge: 18 Registriert: 1. August 2010 21:25
Beitrag
von paule22 » 2. August 2010 08:48
leider wird an den spalten oben nixgeändert, das grid wird 7x7 angezeigt mit den numern links und oben
allerdngs will ich, das die spalten namen bekommen - von datenfeldern einer datenbank (firebird)
solarix
Beiträge: 1133 Registriert: 7. Juni 2007 19:25
Beitrag
von solarix » 2. August 2010 09:16
Mir scheint du hast den Schritt von C auf C++ noch nicht vollständig vollzogen...
Wie wär's denn damit:
Code: Alles auswählen
qDebug() << "Anzahl Columns: " << st->Columns();
QStringList headerStrings;
for (int columnIndex = 0; columnIndex < st->Columns(); columnIndex++)
headerStrings << st->ColumnName(columnIndex);
qDebug() << "HeaderStrings: " << headerStrings;
bt->setHorizontalHeaderLabels(headerStrings);
BTW:
- Indexe beginnen in C bei 0
- Public-Variabeln in Klassen sind kein sauberes OOP
- deklariere Variabeln dort, wo sie benötigt werden.
- Falls es noch etwas komplexer wird: verwende besser MVC (
http://doc.trolltech.com/4.6/model-view ... mming.html )
hth..