Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Qt
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
rugga
0 / 0 / 0
Регистрация: 10.02.2014
Сообщений: 75
1

SIGNAL - SLOT из одного потока в другой

23.04.2015, 14:37. Просмотров 974. Ответов 3
Метки нет (Все метки)

Как из gui-потока вызвать слот нового потока, в контексте нового потока? Допустим при нажатии кнопки, сработал слот нового потока в котором, допустим, записываются данные в файл.
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class ThreadGUI : ... {
   ThreadNEW *ThreadNEW = new ThreadNEW(this);
   ThreadNEW->start();
   connect(this,SIGNAL(clicked()),threadNEW,SLOT(on_cliked()));
}
 
class ThreadNEW : ... {
   public:
      void run() {
          int r = this->exec();
          ...
      }
   public slots:
      void on_cliked() {
          //это нужно cделать в новом потоке
      }
}
В моем примере on_cliked() происходит в контексте ThreadGUI, а мне нужно чтобы он происходил в ThreadNEW. Как это сделать? Также хотел бы знать SLOT происходит в том потоке, в котором объявлен connect к SLOT? Если так, то connect можно объявить в ThreadNEW, но там мы не имеем доступа к ThreadGUI. Потому что ThreadGUI объявлен в main так:
C++ (Qt)
1
2
3
4
5
6
7
8
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    ThreadGUI w;
    w.show();
 
    return a.exec();
}
И как обратиться к w через ThreadNEW?
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2015, 14:37
Ответы с готовыми решениями:

Signal Slot из отдельного потока в основной
Доброго времени суток. Имеется QTreadPool. Имеется свой Runnable с методом run....

without signal-slot
привет, патсаны. предположим есть такая простенькая весчь: #ifndef BUT_H...

Qt (signal and slot)
(у меня есть программа "каталог про книги") в общем задание такое: ...

Signal and Slot
Здравствуйте, задумался об использовании сигналов и слотов. В один момент их...

Signal & Slot введение
Добрый вечер. Помогите пожалуйста разобраться, если розбираетесь в Signal &...

3
Кудаив
410 / 409 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
23.04.2015, 17:46 2
Лучший ответ Сообщение было отмечено rugga как решение

Решение

Цитата Сообщение от rugga Посмотреть сообщение
ThreadNEW *ThreadNEW = new ThreadNEW(this);
объект ThreadNEW находится в гуи потоке, он запускает новый поток

нужно класс QObject переместить в другой поток например методом moveToThread или еще как, предварительно соединив сигналы-слоты
1
ssXXss
266 / 188 / 33
Регистрация: 15.01.2011
Сообщений: 681
23.04.2015, 20:14 3
правильное использование QThread ( от хабра )
1
rugga
0 / 0 / 0
Регистрация: 10.02.2014
Сообщений: 75
23.04.2015, 21:18  [ТС] 4
Да все, спасибо, разобрался.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2015, 21:18

Signal/Slot для QStringList, ну или кто-то так
Есть две формы. С одной формы вызывается вторая форма где и объявлен мой...

QThread Передать даные из одного потока в другой
Надо передать данные из одного потока в другой. Использую сигнал и слот, ибо...

Можно ли сделать, чтоб студия студия искала слоты и сигналы при написании SIGNAL или SLOT в connect?
В QtCreator-е есть несколько удобных фишек, упрощающих работу. Например,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru