Здравствуйте, гость ( Вход | Регистрация )
Litkevich Yuriy | Дата 27.12.2008, 18:18 |
предлагаю этой темой пополнить ЧаВО: Сигналы и слоты | |
Litkevich Yuriy | Дата 18.12.2008, 17:04 |
и вспомнил то что знал да со всяким бывает, чем дольше работаешь с одним иструментом - тем больше запоминаешь. |
|
kuler | Дата 18.12.2008, 16:34 |
Аналогична вызову функции FooSignal(...) через указатель на функцию, если настройки соединения (QObject::connect) умалчиваемые. да блин, прочитал опять про connect и вспомнил то что знал, мне нужно Qt::QueuedConnection. |
|
Litkevich Yuriy | Дата 18.12.2008, 15:49 |
kuler, как я понял для случая однопоточного приложения запись
Аналогична вызову функции FooSignal(...) через указатель на функцию, если настройки соединения (QObject::connect) умалчиваемые. |
|
kuler | Дата 18.12.2008, 15:37 |
и возврат обратно в метод 1, га следующую строку после emit. после того как выполнится 2? |
|
SABROG | Дата 18.12.2008, 15:02 |
Слот вызовется сразу и вызов будет в том же потоке, что и вызывающий этот слот, не смотря на то, что слот может принадлежать другому потоку. Вообще на уровне системы нет никакой принадлежности участка кода к потокам, можно вызывать функции и методы из других потоков без проблем, выполнятся будет в том же потоке из которого был вызов. Цитата последовательность исполнения кода 1-2 или 2-1 ? 1-2. Сначала сигнал потом слот. Короче схема такая. Сигнал из метода 1 вызывает сразу же метод 2 и возврат обратно в метод 1, га следующую строку после emit. |
|
kuler | Дата 18.12.2008, 14:32 |
а если делаешь emit то обработчик (в этом же потоке) выполняется после того как выполнится метод в котором вызван емит или сразу .... емит 1 ..... 2 обработчик() { } последовательность исполнения кода 1-2 или 2-1 ? |
|
kuler | Дата 6.11.2008, 17:23 |
2) Слот может быть вызван через механихм сигнал\слот. Тогда слот выполниться в главном потоке. Пример: void CxConnectionThread::run() { ... QTcpSocket sosket; ... connect(&sosket, SIGNAL(error ( QAbstractSocket::SocketError)), SLOT(connectionError( QAbstractSocket::SocketError))); ... } тута же в дочернем будет? сигнал onReadyRead будет выполнен в главном потоке, а не в том, в котором создавался сокет? нет а вообще есть такая тема: Qt supports three types of signal-slot connections: With direct connections, the slot gets called immediately when the signal is emitted. The slot is executed in the thread that emitted the signal (which is not necessarily the thread where the receiver object lives). With queued connections, the slot is invoked when control returns to the event loop of the thread to which the object belongs. The slot is executed in the thread where the receiver object lives. With auto connections (the default), the behavior is the same as with direct connections if the signal is emitted in the thread where the receiver lives; otherwise, the behavior is that of a queued connection. то бишь слот может вызываться и там или там |
|
Litkevich Yuriy | Дата 5.11.2008, 16:06 |
где написано? Впервые про это прочитал у Шлее, наскору руку нашел вот и в Асистенте:Цитата If you are using multiple inheritance, moc assumes that the first inherited class is a subclass of QObject. Also, be sure that only the first inherited class is a QObject. Цитата Virtual inheritance with QObject is not supported. |
|
kuler | Дата 5.11.2008, 15:51 |
в Qt свой класс может быть наследником только обного потомка от QObject где написано? |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 29.3.2024, 15:42 |