Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: daspisch от Февраль 12, 2010, 13:24



Название: QTimer в классе не наследуемом от QObject
Отправлено: daspisch от Февраль 12, 2010, 13:24
что-то не получается никак это запустить, может кто подскажет как это обойти, или обязательно прикручивать QObject?


Название: Re: QTimer в классе не наследуемом от QObject
Отправлено: voronElf от Февраль 12, 2010, 13:32
а ты коннектишь сигнал от таймера к этому же классу (не наследнику QObject) ? Тогда не будет слот запускаться. Для классов, не наследуемых от QObject механизм сигналов-слотов не действует.

Наследуй от QObject.

ну или можешь попробовать к другому классу-наследнику QObject приконектится, но не знаю, сработает или нет, если класс-владелец объекта не наследник QObject


Название: Re: QTimer в классе не наследуемом от QObject
Отправлено: Amigo_sa от Февраль 12, 2010, 13:44
или можешь попробовать к другому классу-наследнику QObject приконектится, но не знаю, сработает или нет, если класс-владелец объекта не наследник QObject
конечно сработает. Единственное, что может вызвать крах - это коннект сигналов таймера к объекту из другого потока.


Название: Re: QTimer в классе не наследуемом от QObject
Отправлено: Kolobok от Февраль 12, 2010, 16:07
Единственное, что может вызвать крах - это коннект сигналов таймера к объекту из другого потока.
Это почему?


Название: Re: QTimer в классе не наследуемом от QObject
Отправлено: Amigo_sa от Февраль 12, 2010, 16:55
Единственное, что может вызвать крах - это коннект сигналов таймера к объекту из другого потока.
Это почему?
По опыту. Мое приложение падало, когда я пытался обработать слоты на сигналы, сэмиченные в другом потоке.


Название: Re: QTimer в классе не наследуемом от QObject
Отправлено: Kolobok от Февраль 12, 2010, 18:37
Наверное делал Qt::DirectConnection


Название: Re: QTimer в классе не наследуемом от QObject
Отправлено: mcrads от Февраль 12, 2010, 21:27
Это редкие случаи, искать надо в другом, копать при пошаговой отладке. Из моего опыта такого ни разу не происходило.

Так что можно сдело коннектить - но если будут ошибки - по шажочкам выверять, комментить - и искать строчку с ошибкой.
Между потоками нет проблем - 90%


Название: Re: QTimer в классе не наследуемом от QObject
Отправлено: Amigo_sa от Февраль 13, 2010, 00:10
хм. действительно, в ассистенте написано, что
Цитировать
In multithreaded applications, you can use QTimer in any thread that has an event loop.
Скорее всего мое приложение падало, потому что я в слоте я дергал объекты, созданные в другом потоке... надо будет перепроверить. Спасибо за замечание  :)


Название: Re: QTimer в классе не наследуемом от QObject
Отправлено: daspisch от Февраль 15, 2010, 12:22
всем спасибо, предпочёл отправлять событие главному окну чтобы оно запускало сво


Название: Re: QTimer в классе не наследуемом от QObject
Отправлено: daspisch от Февраль 15, 2010, 17:43
спасибо за советы, всё сделал.


Название: Re: QTimer в классе не наследуемом от QObject
Отправлено: break от Февраль 15, 2010, 18:13
Цитировать
ну или можешь попробовать к другому классу-наследнику QObject приконектится, но не знаю, сработает или нет, если класс-владелец объекта не наследник QObject
мужики вы че? коннектить можно только наследников QObject (да еще чтобы макрос Q_OBJECT был) - в нем ведь сигналы и слоты собственно описываются... а иначе как оно заработает?


Название: Re: QTimer в классе не наследуемом от QObject
Отправлено: voronElf от Февраль 16, 2010, 07:31
Цитировать
мужики вы че? коннектить можно только наследников QObject

да, и я о том же
оба объекта, которые коннектятся - наследники QObject (с Q_OBJECT конечно), все нормально. Просто один из коннектящихся объектов является внутренней переменной объекта-не-наследника-QObject.