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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Не работает Q_OBJECT  (Прочитано 3683 раз)
usr00210
Гость
« : Август 30, 2010, 14:55 »

При попытке скомпилировать такой класс:

Код:
class MyWidget : public QWidget
{
    Q_OBJECT
 public:
     explicit MyWidget(QWidget *parent = 0);
 private slots:
};

вылезает несколько ошибок типа: undefined reference to 'vtable for MyWidget'
То ли я что-то не понял, то ли не дочитал... Подскажите пожалуйста в чем ошибка?

Спасибо!
Записан
BRE
Гость
« Ответ #1 : Август 30, 2010, 14:59 »

Ты это делаешь в cpp файле? Так и должно быть.
Не отрабатывает moc для этого файла.
Либо делай объявления класса в .h, либо добавь в свой .cpp файл: #include "имя_файла_cpp.moc" и выполни qmake.
Записан
usr00210
Гость
« Ответ #2 : Август 30, 2010, 15:04 »

Ты это делаешь в cpp файле? Так и должно быть.
Не отрабатывает moc для этого файла.
Либо делай объявления класса в .h, либо добавь в свой .cpp файл: #include "имя_файла_cpp.moc" и выполни qmake.


первое либо сработало! спасибо!
Записан
SASA
Гость
« Ответ #3 : Сентябрь 01, 2010, 15:59 »

А что такье explicit? В чём глубинный смысл его использованя?
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #4 : Сентябрь 01, 2010, 16:16 »

SASA, креатор автоматом генерит такие заготовки
Записан

Юра.
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #5 : Сентябрь 01, 2010, 16:27 »

А что такье explicit? В чём глубинный смысл его использованя?

Если конструктор имеет один параметр, то ключевое слово explicit запрещает автоматическое создание оператора преобразование типа (запрещает неявное преобразование).
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #6 : Сентябрь 01, 2010, 18:01 »

А что такье explicit? В чём глубинный смысл его использованя?

Код:
class MyWidget : public QWidget
{
  ...
public:
     MyWidget(QWidget *parent = 0);
};

QWidget * w = getWidget();  // есть какой-то виджет
..
MyWidget myW = w;  // так можно если нет explicit
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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