Q_OBJECT, moc |
Здравствуйте, гость ( Вход | Регистрация )
Q_OBJECT, moc |
AD |
15.4.2008, 16:09
Сообщение
#1
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Вопрос такой. При разработке нового класса диалогового окна выдает подобные ошибки, если я использую макрос Q_OBJECT:
|
|
|
Litkevich Yuriy |
15.4.2008, 16:15
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
класс содержащий макрос Q_OBJECT, должен быть в отдельном, от функции main, файле, либо нужно в конце файла приинклюдить MOC'ий заголовочный файл, но я так не пробывал.
Иногда помогает очистить все генерируемые файлы и повторно воспользоваться qmake. |
|
|
AD |
15.4.2008, 16:45
Сообщение
#3
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
класс содержащий макрос Q_OBJECT, должен быть в отдельном, от функции main, файле, либо нужно в конце файла приинклюдить MOC'ий заголовочный файл, но я так не пробывал. Иногда помогает очистить все генерируемые файлы и повторно воспользоваться qmake. А какой moc-й заголовочный файл нужен? Пересобрать попытался, не помогло! |
|
|
Litkevich Yuriy |
15.4.2008, 17:01
Сообщение
#4
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
если все делаешь в одном файле, например main.cpp,
то нужно воткнуть такую строку:
я в стречал ее в конце файла, это у Шлее, и перед функцией main, это у Тролей |
|
|
Litkevich Yuriy |
15.4.2008, 17:07
Сообщение
#5
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
вот у Макса пример
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" Файл проекта, без особенностей:
|
|
|
AD |
15.4.2008, 17:16
Сообщение
#6
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
|
|
|
Litkevich Yuriy |
15.4.2008, 17:31
Сообщение
#7
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
т.е. макрос в файле main.cpp отсутствует и такую ошибку дает?
|
|
|
AD |
15.4.2008, 17:37
Сообщение
#8
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
|
|
|
Litkevich Yuriy |
15.4.2008, 17:42
Сообщение
#9
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
попробуй makefile по новой сделать, если ты им пользуешся.
|
|
|
AD |
15.4.2008, 17:47
Сообщение
#10
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
|
|
|
Текстовая версия | Сейчас: 5.12.2024, 1:19 |