crossplatform.ru

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

> Qthread & сигналы
OrSOn
  опции профиля:
сообщение 8.12.2009, 15:18
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 46
Регистрация: 8.12.2009
Пользователь №: 1289

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




Репутация:   0  


Добрый день всем! Столкнулся со следующей проблемой... Есть программа, в которой нужно использовать потоки, причем основной поток должен обмениваться сигналами с вновь созданными. Так вот проблема примерно в следующем:

Попробовал просто все подключить коннектами, в результате thread принимает мои сигналы, но сам их испускать не может.
Попробовал в начале run() вписывать exec(), в результате до нужного участка кода, разумеется, поток не доходил
Попробовал способ с moveToThread(), сделал примерно следующее:

thread1 = new NThread(0);
thread1->moveToThread( thread1 );
connect(thread1, SIGNAL(endThreadSocket( PrioritySocket )), this, SLOT(socketToList( PrioritySocket )));
connect(this, SIGNAL(setSocket1( PrioritySocket )), thread1, SLOT(setThreadSocket( PrioritySocket )));
thread1->start();


При этом поток вообще не видит испускаемых мной сигналов. Подскажите, пожалуйста, что именно делаю не так и как заставить все это дело нормально взаимодействовать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
OrSOn
  опции профиля:
сообщение 8.12.2009, 17:28
Сообщение #2


Студент
*

Группа: Участник
Сообщений: 46
Регистрация: 8.12.2009
Пользователь №: 1289

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




Репутация:   0  


Нет, это я уже все вычитал, поэтому когда я использую эту функцию, я в качестве parent задаю 0, функция срабатывает нормально, иначе бы в дебаге выкинуло с ошибкой... а почему придется? Ведь в примере без нее все нормально работает... Кстати, я попробовал еще упростить в своей программе, в функции мейн написал:

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    Server server;
    server.show();
    srand(time(0));
    NThread *tmpThread = new NThread( 0 );
    QObject::connect( tmpThread, SIGNAL( endThreadSocket( PrioritySocket ) ), &server, SLOT( socketToList( PrioritySocket ) ) );
    tmpThread->start();
    return app.exec();
}

Thread, по-прежнему, в ране в цикле выдает сигналы... Результат тот же, в слот не попадаю, хоть ты тресни..
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- OrSOn   Qthread & сигналы   8.12.2009, 15:18
- - Andrewshkovskii   У Саборга в блоге, что-то такого было, вроде это :...   8.12.2009, 15:21
- - OrSOn   Увы, это не то( Там написано, что сигналы из run()...   8.12.2009, 15:28
|- - BRE   Цитата(OrSOn @ 8.12.2009, 15:28) Увы, это...   8.12.2009, 15:31
- - OrSOn   Ну внутри рана у меня следующее: void NThread...   8.12.2009, 15:36
|- - BRE   Цитата(OrSOn @ 8.12.2009, 15:36) как напи...   8.12.2009, 15:54
|- - BRE   Цитата(OrSOn @ 8.12.2009, 15:36) Т.е. ран...   8.12.2009, 16:02
- - OrSOn   В том и проблема, что суть та же, но у меня не при...   8.12.2009, 15:57
- - OrSOn   Да. Попробовал только что вообще просто все сделат...   8.12.2009, 16:07
|- - BRE   Цитата(OrSOn @ 8.12.2009, 16:07) Так вот ...   8.12.2009, 16:11
- - OrSOn   Что именно подразумевается под запуском очереди со...   8.12.2009, 16:12
|- - BRE   Цитата(OrSOn @ 8.12.2009, 16:12) Что имен...   8.12.2009, 16:14
- - OrSOn   Разумеется, exec() уже выполнен, после чего я созд...   8.12.2009, 16:16
|- - BRE   Цитата(OrSOn @ 8.12.2009, 16:16) Разумеет...   8.12.2009, 16:19
- - OrSOn   ну у меня отличия от примера только в том, что пот...   8.12.2009, 16:26
|- - BRE   Цитата(OrSOn @ 8.12.2009, 16:26) return s...   8.12.2009, 16:47
- - OrSOn   Да потому, что разницы никакой, пробовал и app.exe...   8.12.2009, 16:48
|- - BRE   Цитата(OrSOn @ 8.12.2009, 16:48) Да потом...   8.12.2009, 17:14
- - OrSOn   Ну в данном случае я вообще без moveToThread() дел...   8.12.2009, 17:17
|- - BRE   Цитата(OrSOn @ 8.12.2009, 17:17) Ну в дан...   8.12.2009, 17:24
- - OrSOn   Нет, это я уже все вычитал, поэтому когда я исполь...   8.12.2009, 17:28
|- - BRE   Цитата(OrSOn @ 8.12.2009, 17:28) а почему...   8.12.2009, 17:32
- - OrSOn   Да, я тупанул, вижу, где в примере используется эт...   8.12.2009, 17:36
- - Litkevich Yuriy   OrSOn, прочитай тему: Справка по кнопкам и тэгам ф...   9.12.2009, 0:07
- - OrSOn   Извиняюсь за оформление и спасибо за ссылку! А...   9.12.2009, 9:49
|- - BRE   Цитата(OrSOn @ 9.12.2009, 9:46) Причем Pr...   9.12.2009, 9:49
- - OrSOn   Цитата(BRE @ 9.12.2009, 9:49) int qRegist...   9.12.2009, 9:51
|- - BRE   Цитата(OrSOn @ 9.12.2009, 9:51) Цитата(BR...   9.12.2009, 9:56
- - OrSOn   Тогда не понимаю, почему у меня из основного поток...   9.12.2009, 9:57
- - OrSOn   Поспешил я с тем, что все получилось... Снова нужн...   9.12.2009, 10:37
|- - BRE   Цитата(OrSOn @ 9.12.2009, 10:37) Так вот ...   9.12.2009, 10:41
- - OrSOn   Хммм но ведь если я в потоке вызову exec(), то на ...   9.12.2009, 10:51
|- - BRE   Цитата(OrSOn @ 9.12.2009, 10:51) Хммм но ...   9.12.2009, 11:05
- - OrSOn   Спасибо огромное! Сейчас испытаю. А запущенные...   9.12.2009, 11:08
|- - BRE   Цитата(OrSOn @ 9.12.2009, 11:08) Спасибо ...   9.12.2009, 11:13
- - OrSOn   К сожалению, у меня Qt 4.3, там его еще нету, но в...   9.12.2009, 11:16
- - Litkevich Yuriy   Цитата(OrSOn @ 9.12.2009, 12:51) не совсе...   9.12.2009, 11:43
- - OrSOn   Ясно, спасибо =)   9.12.2009, 11:55


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


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




RSS Текстовая версия Сейчас: 18.1.2025, 15:58