crossplatform.ru

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


  Ответ в signals - slots
Введите ваше имя
Подтвердите код

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

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


Последние 10 сообщений [ в обратном порядке ]
Алексей1153 Дата 27.9.2010, 6:29
 
Цитата(eldar85 @ 26.9.2010, 13:21) *
хотел чтобы основной тоже несколько действий выполнял чтобы еще кучу классов не создавать

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


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

можно произвести класс и сделать кучу публичных функций :)
eldar85 Дата 26.9.2010, 10:21
  да многопоточное приложение я и пишу, дело не в многопоточности, класс для потоков занят другим делом, хотел чтобы основной тоже несколько действий выполнял чтобы еще кучу классов не создавать, пришлось три класса QThread создавать, потому что каждый должен выполнять совершено разные задачи, а у QThread можно пользоваться как нормальной функцией только run(); )))) решил проблему, но не компактно)
Sokoloff Дата 26.9.2010, 1:33
 
Цитата(eldar85 @ 26.9.2010, 1:07) *
мне нужно чтобы сразу все три были запущенны и функция start() вообще закончила свою работу а работали те функции которые запустились. реально ли такое?

У меня ощущение, что тебе надо писать многопоточное приложение. Почитать про это можно здесь и у Бланшет об этом написано.
igor_bogomolov Дата 26.9.2010, 0:48
  Посмотри на QFuture и QtConcurent::Run и примеры с ними в assistant
eldar85 Дата 26.9.2010, 0:07
  может вопрос покажется глупым, но хотелось бы узнать у знающих людей возможно ли сделать так:

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

в конструкторе соединения
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() вообще закончила свою работу а работали те функции которые запустились. реально ли такое?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 14:13