Russian Qt Forum
Ноябрь 25, 2024, 22:45 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 [3] 4 5   Вниз
  Печать  
Автор Тема: Некорректное выполнение  (Прочитано 22485 раз)
Alexu007
Гость
« Ответ #30 : Ноябрь 27, 2014, 12:37 »

Подскажите пжалста, как правильно связать сигнал SendStr со слотом GetStr:

сигнал:

Код
C++ (Qt)
class WorkThread : public QThread
{
   Q_OBJECT
public:
   explicit WorkThread(QObject *parent = 0);
 
protected:
   void run();
 
signals:
 
   void SendStr(const QString str);
 
public slots:
 
};

слот:

Код
C++ (Qt)
namespace Ui {
class MyWidget;
}
 
class MyWidget : public QWidget
{
   Q_OBJECT
 
public:
   explicit MyWidget(QWidget *parent = 0);
   ~MyWidget();
 
private:
   Ui::MyWidget *ui;
   WorkThread *thread;
 
public slots:
   void MyEventHandler1();
   void MyEventHandler2();
 
   void GetStr(QString str);
 
};
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #31 : Ноябрь 27, 2014, 13:09 »

Код:
WorkThread * th = new WorkThread();
MyWidget * w = new MyWidget();
...
QObject::connect(th, SIGNAL( SendStr(QString) ), w, SLOT( GetStr(QString) ));
Записан

Satansoft
Гость
« Ответ #32 : Ноябрь 27, 2014, 14:01 »

Проject целиком.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #33 : Ноябрь 27, 2014, 14:23 »

Проject целиком.
Ну так елы-палы, у Вас же хедеры циклические: mainwindow.h включает cannibals.h и наоборот. Так нельзя
Записан
Satansoft
Гость
« Ответ #34 : Ноябрь 27, 2014, 14:38 »

Убрал хедер mainwindow из cannibals, так что теперь оно идёт примерно так main->mainwindow->cannibals, да только крашится exe даже не начавшись... с объявлениями и дефайнами всё ли в порядке и можно ли define объявлять в *.h, из cpp его же будет видно?
« Последнее редактирование: Ноябрь 27, 2014, 14:44 от Satansoft » Записан
Alexu007
Гость
« Ответ #35 : Ноябрь 27, 2014, 16:01 »

Код
C++ (Qt)
WorkThread * th = new WorkThread();

Где объявлять - в конструкторе формы?  Везде ругается, что: ошибка: undefined reference to `WorkThread::WorkThread(QObject*)'.
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #36 : Ноябрь 27, 2014, 16:05 »

А конструктор WorkThread имеет реализацию?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Alexu007
Гость
« Ответ #37 : Ноябрь 27, 2014, 16:32 »

Код
C++ (Qt)
#include <QThread>
 
class WorkThread : public QThread
{
   Q_OBJECT
public:
   explicit WorkThread(QObject *parent = 0);
 
protected:
   void run();
 
signals:
 
   void SendStr(const QString str);
 
public slots:
 
};

Объявление класса. А какая ещё реализация?
Записан
Satansoft
Гость
« Ответ #38 : Ноябрь 27, 2014, 16:42 »

Как создать 10 потоков в Qt? В цикле вызвать метод start?
Записан
Alexu007
Гость
« Ответ #39 : Ноябрь 27, 2014, 17:22 »

Примерно тот же вопрос. Только: каждый поток должен иметь свой RUN, свой сигнал и свой слот. Если 20 детей - добавлять в проект 20 файлов по одному для каждого класса потока?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #40 : Ноябрь 27, 2014, 17:35 »

Молодежжж, в этой теме Old и я писали заготовки, посмотрите, а потом спрашивайте
Записан
Alexu007
Гость
« Ответ #41 : Ноябрь 27, 2014, 18:00 »

Извините, но в ваших заготовках я не нашёл ответа на поставленные мной вопросы. Нужно несколько неодинаковых детей, каждый со своей скоростью поедания сливы и со своим сигналом.

С помощью new можно наклонировать одинаковых детей. Как сделать разных?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #42 : Ноябрь 27, 2014, 18:10 »

С помощью new можно наклонировать одинаковых детей. Как сделать разных?
Передавать разные параметры при конструировании каждого экземпляра или настраивать их индивидуально после создания.
Записан
Satansoft
Гость
« Ответ #43 : Ноябрь 27, 2014, 18:32 »

Мой вызов идёт из кнопки по обращению к указателю на класс, так что не ясно как там массив сделать ... А маман, при вызове этой дамы - КРАШЪ!!11
« Последнее редактирование: Ноябрь 27, 2014, 18:47 от Satansoft » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #44 : Ноябрь 27, 2014, 18:40 »

Нужно несколько неодинаковых детей, каждый со своей скоростью поедания сливы и со своим сигналом.
Конечно Вы имеете право на свой стиль/подход, но возможно лучше отложить мелочи/детали, а сначала решить принципиальные вопросы. То же касается UI ("фoрм") - лучше сначала консольная версия.

Сделать на слот-сигнал - признаться, я не вижу как Улыбающийся Да, есть неск очевидных вариантов, но они не соответствуют изначальной постановке задачи, получается типа "ребенок просит сливу у мамы" - это совсем не то что спрашивалось.
Записан
Страниц: 1 2 [3] 4 5   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.224 секунд. Запросов: 23.