Здравствуйте, гость ( Вход | Регистрация )
ViGOur | Дата 16.4.2008, 7:54 |
1. Использовать макрос Q_OBJECT можно в классах производных от QObject, прямо или косвенно. 2. Объявление и определения класса должно находится в разных файлых, в *.h и *.cpp соответственно. Посмотри по всем условиям удовлетворяет твой класс? Если по всем и всеравно такая ошибка, попробуй в студии сделать Clean Solution, а потом снова скомпилить. |
|
AD | Дата 15.4.2008, 17:47 |
попробуй makefile по новой сделать, если ты им пользуешся. Так я ведь студией компилирую. |
|
Litkevich Yuriy | Дата 15.4.2008, 17:42 |
попробуй makefile по новой сделать, если ты им пользуешся. | |
AD | Дата 15.4.2008, 17:37 |
т.е. макрос в файле main.cpp отсутствует и такую ошибку дает? в файле main.cpp макроса Q_OBJECT нету! Но есть в файле GraphicDisplay.h |
|
Litkevich Yuriy | Дата 15.4.2008, 17:31 |
т.е. макрос в файле main.cpp отсутствует и такую ошибку дает? | |
AD | Дата 15.4.2008, 17:16 |
если все делаешь в одном файле, например main.cpp, то нужно воткнуть такую строку:
я в стречал ее в конце файла, это у Шлее, и перед функцией main, это у Тролей Файлы разные! |
|
Litkevich Yuriy | Дата 15.4.2008, 17:07 |
вот у Макса пример CODE /* ====================================================================== ** main.cpp ** ====================================================================== ** ** ====================================================================== ** Copyright © 2007 by Max Schlee ** ====================================================================== */ #include <QtGui> // ====================================================================== class MyThread : public QThread { Q_OBJECT private: int m_nValue; public: MyThread() : m_nValue(10) { } void run() { QTimer timer; connect(&timer, SIGNAL(timeout()), SLOT(slotNextValue())); timer.start(1000); exec(); } signals: void finished ( ); void currentValue(int); public slots: void slotNextValue() { emit currentValue(--m_nValue); if (!m_nValue) { emit finished(); } } }; // ---------------------------------------------------------------------- int main(int argc, char** argv) { QApplication app(argc, argv); QLCDNumber lcd; MyThread thread; QObject::connect(&thread, SIGNAL(currentValue(int)), &lcd, SLOT(display(int)) ); QObject::connect(&thread, SIGNAL(finished()), &app, SLOT(quit()) ); lcd.setSegmentStyle(QLCDNumber::Filled); lcd.display(10); lcd.resize(220, 90); lcd.show(); thread.start(); return app.exec(); } #include "main.moc" Файл проекта, без особенностей:
|
|
Litkevich Yuriy | Дата 15.4.2008, 17:01 |
если все делаешь в одном файле, например main.cpp, то нужно воткнуть такую строку:
я в стречал ее в конце файла, это у Шлее, и перед функцией main, это у Тролей |
|
AD | Дата 15.4.2008, 16:45 |
класс содержащий макрос Q_OBJECT, должен быть в отдельном, от функции main, файле, либо нужно в конце файла приинклюдить MOC'ий заголовочный файл, но я так не пробывал. Иногда помогает очистить все генерируемые файлы и повторно воспользоваться qmake. А какой moc-й заголовочный файл нужен? Пересобрать попытался, не помогло! |
|
Litkevich Yuriy | Дата 15.4.2008, 16:15 |
класс содержащий макрос Q_OBJECT, должен быть в отдельном, от функции main, файле, либо нужно в конце файла приинклюдить MOC'ий заголовочный файл, но я так не пробывал. Иногда помогает очистить все генерируемые файлы и повторно воспользоваться qmake. |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 29.3.2024, 11:49 |