Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: signals - slots
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие
eldar85
может вопрос покажется глупым, но хотелось бы узнать у знающих людей возможно ли сделать так:

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

в конструкторе соединения
connect(this, SIGNAL(funk1_signal()), this, SLOT(funk1());
....

void MainWindow::start()
{
emit funk1_signal();
emit funk2_signal();
emit funk3_signal();
}

void MainWindow::funk1()
{
    //долгое действие
}

void MainWindow::funk2()
{
   //долгое действие
}

void MainWindow::funk3()
{
   //долгое действие
}


но вот беда первый сигнал сработал а остальные срабатывают лишь тогда когда доработает первая функция, а мне нужно чтобы сразу все три были запущенны и функция start() вообще закончила свою работу а работали те функции которые запустились. реально ли такое?
igor_bogomolov
Посмотри на QFuture и QtConcurent::Run и примеры с ними в assistant
Sokoloff
Цитата(eldar85 @ 26.9.2010, 1:07) *
мне нужно чтобы сразу все три были запущенны и функция start() вообще закончила свою работу а работали те функции которые запустились. реально ли такое?

У меня ощущение, что тебе надо писать многопоточное приложение. Почитать про это можно здесь и у Бланшет об этом написано.
eldar85
да многопоточное приложение я и пишу, дело не в многопоточности, класс для потоков занят другим делом, хотел чтобы основной тоже несколько действий выполнял чтобы еще кучу классов не создавать, пришлось три класса QThread создавать, потому что каждый должен выполнять совершено разные задачи, а у QThread можно пользоваться как нормальной функцией только run(); )))) решил проблему, но не компактно)
Алексей1153
Цитата(eldar85 @ 26.9.2010, 13:21) *
хотел чтобы основной тоже несколько действий выполнял чтобы еще кучу классов не создавать

поток не может автоматически несколько действий делать - только если ты напишешь для потока менеджер переключения задач, хотя бы самый простой.


Цитата(eldar85 @ 26.9.2010, 13:21) *
а у QThread можно пользоваться как нормальной функцией только run()

можно произвести класс и сделать кучу публичных функций :)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.