Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Danila_Bagrofff от Август 24, 2009, 08:27



Название: Qt 4.5.0: PostEvent(), посылка собственного объекта события
Отправлено: Danila_Bagrofff от Август 24, 2009, 08:27
Мне нужно от одного класса передать в другой определенный набор данных.
QEvent дает возможность передать сообщение с указателем на свой класс. Как нужно сделать это корректно?

Код:
//класс события для передачи данных
class MyEvent : public QEvent
{
   public:
      MyEvent(Type type=QEvent::User);
      char Data[2000]; //данные для передачи
}

//функция в основном потоке:
void MainWindow::sendData()
{
 MyEvent *myEv = new MyEvent();

   //заполняем данные
   myEv->Data[0] = 1;

 QApplication::postEvent(mainObject, myEv); //mainObject - класс-приемщик событий, наследован от QObject
}

Насколько корректно создавать экзмпляр класса локально и тут же его передавать?
В примерах Qt делается именно так. Я пытался делать более глобально, но почему-то была ошибка, явно возникают поблемы в памяти.


Название: Re: Qt 4.5.0: PostEvent(), посылка собственного объекта события
Отправлено: spectre71 от Август 24, 2009, 09:19
... Я пытался делать более глобально, но почему-то была ошибка, явно возникают поблемы в памяти.
Что означает "более глобально" ?


Название: Re: Qt 4.5.0: PostEvent(), посылка собственного объекта события
Отправлено: kwisp от Август 24, 2009, 10:13
void QCoreApplication::postEvent ( QObject * receiver, QEvent * event )   [static]

Adds the event event, with the object receiver as the receiver of the event, to an event queue and returns immediately.

The event must be allocated on the heap since the post event queue will take ownership of the event and delete it once it has been posted. It is not safe to modify or delete the event after it has been posted.

что тебя не устраивает?
покажи как делал что была ошибка.


Название: Re: Qt 4.5.0: PostEvent(), посылка собственного объекта события
Отправлено: Danila_Bagrofff от Август 24, 2009, 12:12
Точно, он же всю кучу сам удаляет после обработки...
Надо читать ман внимательнее. спасибо.