Название: Не собирается простенький проект Отправлено: PavelVX от Ноябрь 26, 2010, 09:22 Даже и не знаю, вопрос по Qt или C.
Win7, Qt4.7, QtCreator. 1. Создаю новый проект(D:\qt4_test\test_delegate2). 2. В папке с новым проектом создаю D:\qt4_test\test_delegate2\delegate.h #ifndef DELEGATE_H #define DELEGATE_H class SpinBoxDelegate : public QItemDelegate { Q_OBJECT public: SpinBoxDelegate(QObject *parent = 0); }; #endif // DELEGATE_H 3. В mainwindow.cpp #include "mainwindow.h" #include "delegate.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); } MainWindow::~MainWindow() { delete ui; } 4. Собираю приложение и оно не собирается, ошибка: In file included from mainwindow.cpp:2: delegate.h:5: error: expected class-name before '{' token Уже и в инете порылся, не могу понять, в чем подвох. %( Название: Re: Не собирается простенький проект Отправлено: UVV от Ноябрь 26, 2010, 09:24 Вероятно в том, что компилятор не знает, что такое QItemDelegate
Название: Re: Не собирается простенький проект Отправлено: BRE от Ноябрь 26, 2010, 09:24 Код
Название: Re: Не собирается простенький проект Отправлено: crossly от Ноябрь 26, 2010, 10:57 тут не в нете рыться надо ... а учебнике по с++
Название: Re: Не собирается простенький проект Отправлено: PavelVX от Ноябрь 26, 2010, 11:49 Спасибо!!! Так и было. Вот только непонятно, почему оно именно так ругалось??? (понять откуда ноги растут было сложно. ну или отсутствие опыта сказывается :( )
Дальше наворачиваю этот проект: delegate.h #ifndef DELEGATE_H #define DELEGATE_H #include <QItemDelegate> #include <QSpinBox> class SpinBoxDelegate : public QItemDelegate { Q_OBJECT public: SpinBoxDelegate(QObject *parent = 0); QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const; void setEditorData(QWidget *editor, const QModelIndex &index) const; void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const; void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const; }; #endif // DELEGATE_H mainwindow.cpp #include "mainwindow.h" #include "delegate.h" #include "ui_mainwindow.h" #include <QtDebug> #include <QtGui> #include <QtSql/QSqlDatabase> #include <QSqlQueryModel> #include <QSqlError> #include <QTableView> #include <QSqlRelation> #include <QSqlRelationalDelegate> #include <QMessageBox> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { /*установка codecs*/ /*тут идет блок коннекта*/ QSqlRelationalTableModel * albumsRelation = new QSqlRelationalTableModel(0); albumsRelation->setTable("public.albums"); albumsRelation->setRelation(1, QSqlRelation("public.vw_polu1", "KODPL", "naim")); albumsRelation->select(); albumsRelation->setEditStrategy(QSqlTableModel::OnRowChange); QTableView * view = new QTableView(0); view->setModel(albumsRelation); view->setColumnHidden(0, true); view->setWindowTitle(QObject::trUtf8("¦Р¦¬TМ¦-¦-¦-TЛ")); SpinBoxDelegate * delegate = new SpinBoxDelegate(this); view->setItemDelegate(delegate); view->show(); } выпадает с ошибкой: D:\qt4_test\test_delegate2/mainwindow.cpp:46: undefined reference to `SpinBoxDelegate::SpinBoxDelegate(QObject*)' Хотя вроде как делаю как в примере. И такой вопрос: а как прога определяет к какому столбцу прикручивать этого делегата? У меня же там может быть несколько связей. |