crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

4 страниц V  < 1 2 3 4 >  
Ответить в данную темуНачать новую тему
> Слоты и Потоки
Litkevich Yuriy
  опции профиля:
сообщение 5.11.2008, 15:46
Сообщение #21


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(kuler @ 5.11.2008, 18:42) *
ибо есть два QObject
вот это очень интересно, в Qt свой класс может быть наследником только обного потомка от QObject
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuler
  опции профиля:
сообщение 5.11.2008, 15:51
Сообщение #22


Танцор диско
***

Группа: Участник
Сообщений: 441
Регистрация: 11.9.2008
Из: Москва
Пользователь №: 289

Спасибо сказали: 6 раз(а)




Репутация:   -1  


Цитата(Litkevich Yuriy @ 5.11.2008, 15:46) *
в Qt свой класс может быть наследником только обного потомка от QObject

где написано?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 5.11.2008, 16:06
Сообщение #23


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(kuler @ 5.11.2008, 18:51) *
где написано?
Впервые про это прочитал у Шлее, наскору руку нашел вот и в Асистенте:
Цитата
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
  опции профиля:
сообщение 6.11.2008, 17:23
Сообщение #24


Танцор диско
***

Группа: Участник
Сообщений: 441
Регистрация: 11.9.2008
Из: Москва
Пользователь №: 289

Спасибо сказали: 6 раз(а)




Репутация:   -1  


Цитата(Гость_anonymous_* @ 30.9.2008, 18:10) *
2) Слот может быть вызван через механихм сигнал\слот. Тогда слот выполниться в главном потоке. Пример:

void CxConnectionThread::run()
{
...
QTcpSocket sosket;
...
connect(&sosket, SIGNAL(error ( QAbstractSocket::SocketError)), SLOT(connectionError( QAbstractSocket::SocketError)));
...
}

тута же в дочернем будет?
Цитата(512es @ 31.10.2008, 12:27) *
сигнал 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.

то бишь слот может вызываться и там или там
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuler
  опции профиля:
сообщение 18.12.2008, 14:32
Сообщение #25


Танцор диско
***

Группа: Участник
Сообщений: 441
Регистрация: 11.9.2008
Из: Москва
Пользователь №: 289

Спасибо сказали: 6 раз(а)




Репутация:   -1  


а если делаешь emit то обработчик (в этом же потоке) выполняется после того как выполнится метод в котором вызван емит или сразу

....
емит
1 .....


2 обработчик()
{

}

последовательность исполнения кода 1-2 или 2-1 ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 18.12.2008, 15:02
Сообщение #26


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Слот вызовется сразу и вызов будет в том же потоке, что и вызывающий этот слот, не смотря на то, что слот может принадлежать другому потоку. Вообще на уровне системы нет никакой принадлежности участка кода к потокам, можно вызывать функции и методы из других потоков без проблем, выполнятся будет в том же потоке из которого был вызов.

Цитата
последовательность исполнения кода 1-2 или 2-1 ?


1-2. Сначала сигнал потом слот. :)

Короче схема такая. Сигнал из метода 1 вызывает сразу же метод 2 и возврат обратно в метод 1, га следующую строку после emit.

Сообщение отредактировал SABROG - 18.12.2008, 15:07
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuler
  опции профиля:
сообщение 18.12.2008, 15:37
Сообщение #27


Танцор диско
***

Группа: Участник
Сообщений: 441
Регистрация: 11.9.2008
Из: Москва
Пользователь №: 289

Спасибо сказали: 6 раз(а)




Репутация:   -1  


Цитата(SABROG @ 18.12.2008, 15:02) *
и возврат обратно в метод 1, га следующую строку после emit.

после того как выполнится 2?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 18.12.2008, 15:49
Сообщение #28


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


kuler, как я понял для случая однопоточного приложения запись
...
emit FooSignal(arg1, arg2, ... argN);


Аналогична вызову функции FooSignal(...) через указатель на функцию, если настройки соединения (QObject::connect) умалчиваемые.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kuler
  опции профиля:
сообщение 18.12.2008, 16:34
Сообщение #29


Танцор диско
***

Группа: Участник
Сообщений: 441
Регистрация: 11.9.2008
Из: Москва
Пользователь №: 289

Спасибо сказали: 6 раз(а)




Репутация:   -1  


Цитата(Litkevich Yuriy @ 18.12.2008, 15:49) *
Аналогична вызову функции FooSignal(...) через указатель на функцию, если настройки соединения (QObject::connect) умалчиваемые.

да блин, прочитал опять про connect и вспомнил то что знал, мне нужно Qt::QueuedConnection.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 18.12.2008, 17:04
Сообщение #30


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(kuler @ 18.12.2008, 19:34) *
и вспомнил то что знал
да со всяким бывает, чем дольше работаешь с одним иструментом - тем больше запоминаешь.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

4 страниц V  < 1 2 3 4 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


9 чел. читают эту тему (гостей: 9, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 23.1.2025, 1:13