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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Ругается на строчку с emit  (Прочитано 2554 раз)
Zilibobas
Гость
« : Декабрь 09, 2014, 19:57 »

Код:
#ifndef MAIN_H
#define MAIN_H

class cCounter : public QObject
{
   Q_OBJECT
   public:
     cCounter() { m_value = 0; }
     int value() const { return m_value; }
   public slots:
     void setValue(int value);
   signals:
     void valueChanged(int newValue);
   private:
     int m_value;
};

#endif // MAIN_H

Код:
#include <QApplication>
#include <QQmlApplicationEngine>

#include <QObject>
//#include <QCryptographicHash>

#include "main.h"

void cCounter::setValue(int value)
{
   if (value != m_value) {
     m_value = value;
     emit valueChanged(value);
   }
}

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

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

    QQmlApplicationEngine engine;
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

    return app.exec();
}

если закоменить посыл сигнала "emit valueChanged(value);" все компилится, еслин е комментить пишет ошибку:
main.obj:-1: ошибка: LNK2019: ссылка на неразрешенный внешний символ "public: void __cdecl cCounter::valueChanged(int)" (?valueChanged@cCounter@@QEAAXH@Z) в функции "public: void __cdecl cCounter::setValue(int)" (?setValue@cCounter@@QEAAXH@Z)

уже не знаю что делать вообще.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Декабрь 09, 2014, 21:08 »

Перенести этот код в отдельный cpp файл
Код
C++ (Qt)
#include "main.h"
 
void cCounter::setValue(int value)
{
  if (value != m_value) {
    m_value = value;
    emit valueChanged(value);
  }
}
 

 Улыбающийся
Записан

vbv
Чайник
*
Offline Offline

Сообщений: 59


Просмотр профиля
« Ответ #2 : Декабрь 09, 2014, 21:16 »

1. Выполнить, если не выполнен qmake.
2. Сделать переменную в сигнале const.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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