Seite 1 von 1

QTableWidget und Spaltennamen QT 4.6.2

Verfasst: 1. August 2010 21:43
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

Re: QTableWidget und Spaltennamen QT 4.6.2

Verfasst: 2. August 2010 06:33
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?

Verfasst: 2. August 2010 08:48
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)

Verfasst: 2. August 2010 09:16
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..