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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблемы со слотами  (Прочитано 2457 раз)
lucky
Гость
« : Февраль 02, 2011, 00:54 »

Добрый вечер. У меня возникла следующая проблема. Пытался разобраться со сигналами и слотами. Вот код:
Код:
#include <QtGui/QApplication>

class MyClass : public QObject
{
    Q_OBJECT

    private:
        int val;

    public:
        MyClass()
        {
            val = 0;
        }

        int getVal()
        {
            return val;
        }

    public slots:
        void setValue(int value);

    signals:
        void valueChanged(int newValue);
};

void MyClass::setValue(int value)
{
    if (value != val) {
        val = value;
        emit valueChanged(value);
    }
}

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

    MyClass a, b;
    QObject::connect(&a, SIGNAL(valueChanged(int)), &b, SLOT(setValue(int)));

    a.setValue(3);
    b.setValue(7);

    return app.exec();
}
При сборке проекта вылетает ошибка: "undefined reference to vtable for MyClass".
Уже пытался удалять make-файлы. Результат 0. Подскажите пожалуйста в чем ошибки.
Записан
Fat-Zer
Гость
« Ответ #1 : Февраль 02, 2011, 01:08 »

а) вынести объявление/опредиление объекта в отдельный хедер/.цпп
б) в !конеце! файла добавить #include <имя_файла>.moc
Записан
lucky
Гость
« Ответ #2 : Февраль 02, 2011, 01:19 »

Fat-Zer большое спасибо. Пункт "а)" помог Улыбающийся. Вынес по отдельным файлам, заработало. Можете подсказать почему именно так по отдельным файлам?
« Последнее редактирование: Февраль 02, 2011, 01:21 от lucky » Записан
Fat-Zer
Гость
« Ответ #3 : Февраль 02, 2011, 01:34 »

Это связано с moc'ом, а точнее с тем в как qmake создаёт правила для сборки с помощью оного в мейкфайлах. Подробнее об этом написано в асистенте Using the Meta-Object Compiler (moc).
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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