Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Frostorator от Июль 31, 2011, 04:47



Название: Ошибка при reimplementing timerEvent у наследника QMessageBox (решено)
Отправлено: Frostorator от Июль 31, 2011, 04:47
Пытаюсь использовать встроенный во все виджеты таймер, получаю следующие ошибки:
Цитировать
...\tickingqmessagebox.cpp:5: error: invalid use of incomplete type 'struct QTimerEvent'
...\QtSDK\Desktop\Qt\4.7.3\mingw\include\QtCore\qobject.h:63: error: forward declaration of 'struct QTimerEvent'

Минимальный код (строка с ошибкой содержит комментарий):

Код:
tickingqmessagebox.h
Код:
#ifndef TICKINGQMESSAGEBOX_H
#define TICKINGQMESSAGEBOX_H

#include <QMessageBox>

class TickingQMessageBox : public QMessageBox
{
  Q_OBJECT
public:
  explicit TickingQMessageBox(QWidget *parent = 0) : QMessageBox(parent) {};
protected:
  void timerEvent(QTimerEvent *);
};

#endif // TICKINGQMESSAGEBOX_H

Код:
tickingqmessagebox.cpp
Код:
#include "tickingqmessagebox.h"

void TickingQMessageBox::timerEvent(QTimerEvent * event)
{
  if (event->timerId==0) {} // строка с ошибкой
}

main.cpp и .pro файл стандартные, компиляция только под desktop.
При попытке переноса реализации функции из .c в .h файл получаю на той же строке:
Цитировать
error: invalid use of member (did you forget the '&' ?)
P.S. последний SDK, компилирую в Creator


Название: Re: Ошибка при reimplementing timerEvent у наследника QMessageBox
Отправлено: Mikhail от Июль 31, 2011, 08:31
Так не пробовал:

if (event->timerId() == 0) {}


Название: Re: Ошибка при reimplementing timerEvent у наследника QMessageBox
Отправлено: Kolobok от Июль 31, 2011, 10:54
#include <QTimerEvent>


Название: Re: Ошибка при reimplementing timerEvent у наследника QMessageBox
Отправлено: pastor от Июль 31, 2011, 13:28
Код
C++ (Qt)
#include <QMessageBox>
 
class QTimerEvent;
 
class TickingQMessageBox : public QMessageBox
{
...
};
...

Код
C++ (Qt)
#include "tickingqmessagebox.h"
 
#include <QTimerEvent>
 
void TickingQMessageBox::timerEvent(QTimerEvent * event)
{
 if (event->timerId() == 0) {}
}


Название: Re: Ошибка при reimplementing timerEvent у наследника QMessageBox
Отправлено: Frostorator от Июль 31, 2011, 16:08
Спасибо всем за исправление ошибок, проблема решена.