crossplatform.ru

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


  Ответ в Слоты и Потоки
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 27.12.2008, 18:18
  предлагаю этой темой пополнить ЧаВО: Сигналы и слоты
Litkevich Yuriy Дата 18.12.2008, 17:04
 
Цитата(kuler @ 18.12.2008, 19:34) *
и вспомнил то что знал
да со всяким бывает, чем дольше работаешь с одним иструментом - тем больше запоминаешь.
kuler Дата 18.12.2008, 16:34
 
Цитата(Litkevich Yuriy @ 18.12.2008, 15:49) *
Аналогична вызову функции FooSignal(...) через указатель на функцию, если настройки соединения (QObject::connect) умалчиваемые.

да блин, прочитал опять про connect и вспомнил то что знал, мне нужно Qt::QueuedConnection.
Litkevich Yuriy Дата 18.12.2008, 15:49
  kuler, как я понял для случая однопоточного приложения запись
...
emit FooSignal(arg1, arg2, ... argN);


Аналогична вызову функции FooSignal(...) через указатель на функцию, если настройки соединения (QObject::connect) умалчиваемые.
kuler Дата 18.12.2008, 15:37
 
Цитата(SABROG @ 18.12.2008, 15:02) *
и возврат обратно в метод 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
 
Цитата(Гость_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.

то бишь слот может вызываться и там или там
Litkevich Yuriy Дата 5.11.2008, 16:06
 
Цитата(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 Дата 5.11.2008, 15:51
 
Цитата(Litkevich Yuriy @ 5.11.2008, 15:46) *
в Qt свой класс может быть наследником только обного потомка от QObject

где написано?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 15:42