QTableWidget und Spaltennamen QT 4.6.2

Alles rund um die Programmierung mit Qt
Antworten
paule22
Beiträge: 18
Registriert: 1. August 2010 21:25

QTableWidget und Spaltennamen QT 4.6.2

Beitrag von paule22 »

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:

Re: QTableWidget und Spaltennamen QT 4.6.2

Beitrag von Christian81 »

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 »

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 »

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..
Antworten