Результаты поиска по запросу "qthread"

2 ответа

Зачем использовать QMetaObject :: invokeMethod при выполнении метода из потока

У меня есть следующий код: class A : public QObject { Q_OBJECT public: A() : QObject() { moveToThread(&t); t.start(); } ~A() { t.quit(); t.wait(); } void doSomething() { QMetaObject::invokeMethod(this,"doSomethingSlot"); } public slots: ...

2 ответа

PyQt: подключение сигнала к слоту для запуска фоновой операции

У меня есть следующий код, который выполняет фоновую операцию (

2 ответа

Тип соединения Qt между потоками: почему это работает?

Пытаясь заставить работать многокамерную систему с другим потоком, работающим с другой камерой, я не могt получить сигналы и слоты, работающие правильно межд...

ТОП публикаций

1 ответ

QThread не работает хорошо

это субобъект QTread ... и конкретизировать его в основном потоке .... ошибка во время выполнения следующим образом: Ошибка ASSERT в QCoreApplication :: sendEvent: «Невозможно отправить события объектам, принадлежащим другому потоку. Текущий ...

2 ответа

Qt QThread проблема с использованием сигнала / слота при переходе от рабочего к графическому интерфейсу

У меня есть приложение Qt, которое было разработано с использованием Qt Creator и сопровождающего его инструмента с графическим интерфейсом. У меня есть основная тема,TheGui и рабочий поток, который создается основным потоком,WorkerThread ...

2 ответа

Как безопасно уничтожить QThread?

Я хочу правильно уничтожить

2 ответа

Заставить основной поток ждать, пока все остальные Qthread не закончат

Есть ли способ заставить основной поток ждать, пока все потоки, созданные из него, завершат свою работу, прежде чем завершить программу. Я имею в виду:}

3 ответа

ИМХО тебе не следует. Опрос требует быть в вечной петле. Вы должны сделать это в функции запуска QThread, чтобы невозможно было заново реализовать функцию без предварительного подкласса. Даже если вы попытаетесь обойти это с помощью таймера с одним выстрелом, я не рекомендую это делать. Вам лучше (вот как мне нравится это делать) подкласс QThread, вызывающий moveToThread (), а не вызов exec () и запускающий цикл навсегда. Для примера посмотрите на пример клиента блокировки Fortune из qt. Если вы не вызываете moveToThread () для QThread, тогда объект QThread все еще находится в основном потоке графического интерфейса, и они оба используют один и тот же цикл обработки событий (что плохо при использовании функций опроса). Вызов moveToThread (QThread) без вызова exec () означает, что QThread не будет иметь цикл обработки событий (что хорошо в вашем случае). Вызов exec () запускает собственный цикл обработки событий, но не используется для схем опроса, и вы бы покинули функцию run.

я есть класс, который является абстракцией какого-то устройства. class Device { public: ... void Start(); void Stop(); void MsgLoop(); signals: void sMsgArrived(); }Start () и Stop () вызываются из потока GUI. Start () начинает новый поток, ...

3 ответа

QObject :: startTimer: таймеры могут использоваться только с потоками, запущенными с QThread

Я пытаюсь запустить таймер в цикле событий рабочего потока, но я получаю эту ошибку:

1 ответ

Тип соединения Qt между потоками: почему это работает?

При попытке заставить многокамерную систему работать с другим потоком, работающим с другой камерой, я не мог правильно настроить сигналы и слоты между различными потоками. Я знал, что что-то не так с тем фактом, что объект, отправляющий сигнал, и ...