QSqTableView sehe die Header nicht!

Alles rund um die Programmierung mit Qt
Antworten
legatusd
Beiträge: 1
Registriert: 3. September 2012 07:13

QSqTableView sehe die Header nicht!

Beitrag von legatusd »

Hallo ich würde gerne eine Anwendung erstellen mit der Mann auf eine Datenbank zugreifen kann und querys ausführen kann, ich wollte zuerst die Anwendung ohne Funktionalitäten erstellen und stieß dabei auf mein erstes Problem, ich habe ein Menu und als CentralWidget wollte ich QTableView verwenden, jedoch werden die Header nicht angezeigt kann das daran liegen, dass keine verbindung mit der Db besteht oder ist mein Code fehlerhaft ?


Code:
Hier die 2 wichtigsten Funktionen:

Code: Alles auswählen

Thomas::Thomas(){

createMenu();
centralWidget();
}

void Thomas::createMenu()
{
menu1 = menuBar()->addMenu(tr("&Edit"));
    menu1->addAction("dfsf");


    menu2 = menuBar()->addMenu(tr("&Edit"));
    menu2->addAction("sfasf");

    menu3 = menuBar()->addMenu(tr("&Edit"));
    menu3->addAction("fsdfs");

    menu4 = menuBar()->addMenu(tr("&About us"));
    menu4->addAction("sdfss");

}

void Thomas::centralWidget()
{
  trainplan = new QSqlTableModel;
    trainplan->setTable("aha");
    trainplan->setEditStrategy(QSqlTableModel::OnManualSubmit);
    trainplan->select();

    trainplan->setHeaderData(0, Qt::Horizontal, tr("Tusfs"));
    trainplan->setHeaderData(1, Qt::Horizontal, tr("dsfs"));
    trainplan->setHeaderData(2, Qt::Horizontal, tr("sfs"));
    trainplan->setHeaderData(3, Qt::Horizontal, tr("Thursday"));
    trainplan->setHeaderData(4, Qt::Horizontal, tr("Friday"));
    trainplan->setHeaderData(5, Qt::Horizontal, tr("Saturday"));
    trainplan->setHeaderData(6, Qt::Horizontal, tr("Sunday"));



    QTableView *view = new QTableView;
    view->setModel(trainplan);
    view->setMaximumSize(100,200);
    view->showGrid();


    setCentralWidget(view);

}
Würde mich über Hilfe freuen danke!!
Marcus Breuer
Beiträge: 113
Registriert: 31. März 2011 17:19
Wohnort: Aachen
Kontaktdaten:

Re: QSqTableView sehe die Header nicht!

Beitrag von Marcus Breuer »

Hallo legatusd,

du müsstest erst eine Verbindung zu deiner Datenbank herstellen. Ich erledige das immer in der main()-Methode. Ich bin mir nicht mehr ganz sicher, aber ich würde es dann so machen, dass du die Spalten in der Tabelle der Datenbank entsprechend benennst und dann das TableModel über das TableView anzeigen lässt. Aber wie gesagt, ich bin mir selbst nicht mehr ganz sicher. Hatte mir hier auch damals Hilfe geholt und es funktionierte dann auch, wie gewollt.
Aber so sollte es möglich sein, dass du die Header dementsprechend anzeigen lässt.

Hoffe, dass dir das helfen wird. Grüße,
Marcus
Antworten