Название: Сигнал-Слот Отправлено: simark1979 от Декабрь 26, 2009, 00:11 Есть вот такой класс, следит за изменениями в каталоге
Вроде имеется в нем слот directoryChanged но connect его не видит, хотя вызвать его через emit удается. Результат работы: Object::connect: No such slot QObject::slot_directoryChanged(const QString &) in gsm_handler.cpp:9 Directory changed: "hand emitted" Что не так? #include "gsm_handler.h" #include <QDebug> gsm_handler::gsm_handler() { qDebug() << "Constructor gsm_handler"; QFileSystemWatcher *FileSystemWatcher = new QFileSystemWatcher(); connect(FileSystemWatcher, SIGNAL(directoryChanged(const QString &)), this, SLOT(slot_directoryChanged(const QString &))); FileSystemWatcher->addPath("/sms"); emit slot_directoryChanged("hand emitted"); } void gsm_handler::slot_directoryChanged(const QString & path){ qDebug() << "Directory changed: " << path; } Название: Re: Сигнал-Слот Отправлено: BRE от Декабрь 26, 2009, 00:21 Покажи, что в gsm_handler.h.
Название: Re: Сигнал-Слот Отправлено: Dendy от Декабрь 26, 2009, 00:28 Я даже знаю что - нет макроса Q_OBJECT. Поэтому SLOT() берётся из родительского класса - из QObject. А там, понятно, такого слота нет.
Название: Re: Сигнал-Слот Отправлено: lit-uriy от Декабрь 26, 2009, 01:25 И вот это тоже косячёк:
>>emit slot_directoryChanged("hand emitted"); слоты не посылаются, их просто вызывают как обычные функции. Название: Re: Сигнал-Слот Отправлено: Alex Custov от Декабрь 26, 2009, 17:55 Я даже знаю что - нет макроса Q_OBJECT. Поэтому SLOT() берётся из родительского класса - из QObject. А там, понятно, такого слота нет. И второй вариант - Q_OBJECT всё-таки добавили, но qmake заново не вызвали. Название: Re: Сигнал-Слот Отправлено: pastor от Декабрь 26, 2009, 18:54 И второй вариант - Q_OBJECT всё-таки добавили, но qmake заново не вызвали. Тогда бы приложение не слинковалось Название: Re: Сигнал-Слот Отправлено: simark1979 от Декабрь 27, 2009, 19:37 А вот
gsm_handler.h. #include <QObject> #include <QFileSystemWatcher> class gsm_handler : public QObject { public: gsm_handler(); ~gsm_handler(); protected slots: void slot_directoryChanged(const QString & path); }; Название: Re: Сигнал-Слот Отправлено: BRE от Декабрь 27, 2009, 19:53 Забыл Q_OBJECT:
Код
и не забудь сделать qmake. Название: Re: Сигнал-Слот Отправлено: simark1979 от Декабрь 27, 2009, 21:08 Спасибо. Мужики. Я только начинаю.
Извиняете за тупые вопросы. :) Я не забыл, я не знал >:( |