Russian Qt Forum
Ноябрь 24, 2024, 17:59 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Не собирается простенький проект  (Прочитано 2671 раз)
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
Уже и в инете порылся, не могу понять, в чем подвох. %(
Записан
UVV
Гость
« Ответ #1 : Ноябрь 26, 2010, 09:24 »

Вероятно в том, что компилятор не знает, что такое QItemDelegate
Записан
BRE
Гость
« Ответ #2 : Ноябрь 26, 2010, 09:24 »

Код
C++ (Qt)
#ifndef DELEGATE_H
#define DELEGATE_H
 
#include <QItemDelegate>
 
class SpinBoxDelegate : public QItemDelegate
{
    Q_OBJECT
public:
    SpinBoxDelegate(QObject *parent = 0);
};
 
#endif // DELEGATE_H
 
Записан
crossly
Гость
« Ответ #3 : Ноябрь 26, 2010, 10:57 »

тут не в нете рыться надо ... а учебнике по с++
Записан
PavelVX
Гость
« Ответ #4 : Ноябрь 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*)'
Хотя вроде как делаю как в примере.
И такой вопрос: а как прога определяет к какому столбцу прикручивать этого делегата? У меня же там может быть несколько связей.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.084 секунд. Запросов: 21.