ich habe ein Problem mit QSqlRelationalDelegate.
Folgendes kleines Programm soll den Inhalt einer Datenbank darstellen. Das funktioniert auch ganz gut, aber meine Versuche mit QSqlRelationalDelegate eine Combobox in dem QTableView zu erzeigen, scheitert schon beim Kompilieren kläglich.
Der Fehler lautet:
Dabei halte ich mich zimelich präziese an das Beispiel aus der QT-Dokumentation.error: expected type-specifier before ‘QSqlRelationalDelegate’
MainWindow.h
Code: Alles auswählen
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
class MainWindow : public QMainWindow {
Q_OBJECT
public:
MainWindow( QWidget *parent = 0 );
~MainWindow();
};
#endifCode: Alles auswählen
#include <QVBoxLayout>
#include <QTableView>
#include <QSqlRelationalTableModel>
#include <QSqlRelationalDelegate>
#include <QSqlQuery>
#include <QDebug>
#include "MainWindow.h"
MainWindow::MainWindow( QWidget *parent ) : QMainWindow( parent ) {
QSqlDatabase db = QSqlDatabase::addDatabase( "QSQLITE" );
db.setDatabaseName( "my.db.sqlite" );
db.open();
QSqlQuery query( db );
query.exec( "CREATE TABLE IF NOT EXISTS Activities (Id INTEGER PRIMARY KEY, ProjectId INTEGER, Description TEXT)" );
query.exec( "CREATE TABLE IF NOT EXISTS ProjectList (Id INTEGER PRIMARY KEY, Name TEXT)" );
query.exec( "INSERT INTO Activities (Id, ProjectId, Description) VALUES (1, 1, 'Nothing')" );
query.exec( "INSERT INTO ProjectList (Id, Name) VALUES (1, 'Building')" );
QSqlTableModel *model = new QSqlTableModel(this);
QSqlRelationalTableModel *modelRelational = new QSqlRelationalTableModel(this);
modelRelational->setTable( "Activities" );
modelRelational->setRelation(1, QSqlRelation("ProjectList", "Id", "Name"));
modelRelational->setEditStrategy( QSqlTableModel::OnFieldChange );
modelRelational->select();
modelRelational->setHeaderData( 0, Qt::Horizontal, tr( "ID" ) );
modelRelational->setHeaderData( 1, Qt::Horizontal, tr( "Project" ) );
modelRelational->setHeaderData( 2, Qt::Horizontal, tr( "Description" ) );
QTableView *tableViewRelational = new QTableView( this );
setCentralWidget(tableViewRelational);
tableViewRelational->setModel( modelRelational );
tableViewRelational->setItemDelegate( new QSqlRelationalDelegate( tableView ) );
tableViewRelational->show();
}
MainWindow::~MainWindow() {
}Code: Alles auswählen
#include <QtGui/QApplication>
#include "MainWindow.h"
int main(int argc, char *argv[]){
QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();
}Code: Alles auswählen
tableViewRelational->setItemDelegate( new QSqlRelationalDelegate( tableView ) );Ich verwende nicht qmake sondern CMake, glaube aber mittels
Code: Alles auswählen
target_link_libraries(SqlTest
${QT_QTCORE_LIBRARY}
${QT_QTGUI_LIBRARY}
${QT_QTSQL_LIBRARY}
)Kann mir vielleicht jemand auf die Sprünge helfen, wo bei mir der Fehler liegen könnte?