crossplatform.ru

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


  Ответ в СИГНАЛ в главном потоке, СЛОТ - в дочернем
Введите ваше имя
Подтвердите код

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

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


Последние 10 сообщений [ в обратном порядке ]
pelican Дата 2.9.2009, 18:44
  sploid, BRE, об этом я уже читал. И сразу в конструкторе прописал, чтоб не забыть )))
AddThread::AddThread()
{
    moveToThread(this);
}
BRE Дата 2.9.2009, 18:28
 
Цитата(sploid @ 2.9.2009, 18:24) *
pelican, маленькое замечание, слот вызовется не в созданном потоке, а в главном потоке.

Уточнение: слот будет выполняться в контексте того потока из которого будет вызван. Если будет вызван из run() потока, то выполнится в контексте потока. Если объект наследник от QThread будет перемещен в контекст потока (QObject::moveToThread), то так-же будет выполняться в контексте потока.
sploid Дата 2.9.2009, 17:24
  pelican, маленькое замечание, слот вызовется не в созданном потоке, а в главном потоке.
kwisp Дата 2.9.2009, 12:06
  проблема международного характера кстати
reich Дата 2.9.2009, 9:41
  Без определения макроса Q_OBJECT в классе не будут доступны ключевые слова Qt типа signals, slots, emit и т.п. Потому, не забывайте определять Q_OBJECT в том классе, в котором хотите использовать сигналы/слоты
pelican Дата 1.9.2009, 17:31
 
Цитата(gigabyte @ 1.9.2009, 18:05) *
В идеале результат можно было бы выставить сюда в виде заголовка класса, чтоб те у кого появится эта проблема в дальнейшем видели решение, а не по новой плодили подобные темы

#ifndef ADDTHREAD_H
#define ADDTHREAD_H

#include <QThread>
#include <QMutex>
#include <QStringList>

class AddThread : public QThread
{
    Q_OBJECT

public:
    AddThread();
    ~AddThread();

protected:
    void run(void);

private:
    QMutex mutex;

public slots:
    void open(QStringList filelist);
    void add(QStringList filelist);

};

#endif // ADDTHREAD_H
gigabyte Дата 1.9.2009, 17:05
 
Цитата(pelican @ 1.9.2009, 12:44) *
Цитата(Litkevich Yuriy @ 31.8.2009, 18:44) *
Цитата(pelican @ 31.8.2009, 20:06) *
Object::connect: No such slot QThread::add() in .\mainwindow.cpp:28
по моему выделенное более интересно

Вкурил доки - добавил Q_OBJECT в определение класса потока, подтесал ещё кое-что по мелочам. И всё заработало! :) Спасибо за внимание.

В идеале результат можно было бы выставить сюда в виде заголовка класса, чтоб те у кого появится эта проблема в дальнейшем видели решение, а не по новой плодили подобные темы
pelican Дата 1.9.2009, 12:44
 
Цитата(Litkevich Yuriy @ 31.8.2009, 18:44) *
Цитата(pelican @ 31.8.2009, 20:06) *
Object::connect: No such slot QThread::add() in .\mainwindow.cpp:28
по моему выделенное более интересно

Вкурил доки - добавил Q_OBJECT в определение класса потока, подтесал ещё кое-что по мелочам. И всё заработало! :) Спасибо за внимание.
Litkevich Yuriy Дата 31.8.2009, 17:44
 
Цитата(pelican @ 31.8.2009, 20:06) *
Object::connect: No such slot QThread::add() in .\mainwindow.cpp:28
по моему выделенное более интересно
pelican Дата 31.8.2009, 16:43
 
Цитата
вот

:yes: Это я видел...
Ладно, сам лопатить буду. :sad2:
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 17:34