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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Два сигнала в один слот  (Прочитано 8506 раз)
PulSar.CE3194694
Гость
« : Август 13, 2010, 21:27 »

Добрый день!
Вопрос такой: можно отправить два и более сигналов в один слот? Например, когда оба сигнала передают передают какие-нибудь значения.
Записан
SimpleSunny
Гость
« Ответ #1 : Август 13, 2010, 22:31 »

Соединить необходимое количество сигналов с одним слотом.
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #2 : Август 13, 2010, 22:52 »

>>Вопрос такой: можно отправить два и более сигналов в один слот?
Ответ: да
Записан

Юра.
PulSar.CE3194694
Гость
« Ответ #3 : Август 17, 2010, 13:56 »

Хорошо, вот слот: void MainWindow::MySlot(int Q, double W, bool E) Кроме сигнала MySignal(Q, W, E) хочу, например, в него послать эти: MySignal1(QLine line) и MySignal2(QMatrix matrix, double *QWERTY).  Как это сделать? Если просто их сконектить со слотом, то вылезет ошибка.
Записан
Anarion
Гость
« Ответ #4 : Август 17, 2010, 14:08 »

А Вы различные по типу и количеству параметры передаете.
Записан
labview
Гость
« Ответ #5 : Август 17, 2010, 14:09 »

Либо используй несколько слотов, на каждый тип данных, либо один слот, но тогда нужно передавать "неопределённый" тип данных, например Byte Array, который в дальнейшем в слоте преобразуется в нужный тип данных с помощью кастинга. О типе данных тоже нужно сообщать слоту с помощью еньюмератора например.
Могу ошибатьса, я сам новичёк...
Записан
Anarion
Гость
« Ответ #6 : Август 17, 2010, 14:12 »

Ну если уж прямо нужно все сигналы в один этот слот, то сделай для слота все возможные параметры, которые требуется получить от всех сигналов, а при эмите сигналов ненужные в данном контретном случае параметры отправляй нулевыми. Но только потом придется разбираться, сигнал с какими параметрами пришел. Так что все таки лучше на каждый набор параметров свой слот.
Записан
labview
Гость
« Ответ #7 : Август 23, 2010, 17:47 »

Подскажите пожалуйста какой тип данных можно использовать для передачи любых данных. Подойдёт ли QVariant? Или стоит попробовать QByteArray? Может быть лучше взять union?
Записан
BRE
Гость
« Ответ #8 : Август 23, 2010, 17:49 »

Подскажите пожалуйста какой тип данных можно использовать для передачи любых данных. Подойдёт ли QVariant? Или стоит попробовать QByteArray? Может быть лучше взять union?
Ты по подробней расскажи про данные.
А вообще данные можно даже в текстовом виде передавать.
Записан
labview
Гость
« Ответ #9 : Август 23, 2010, 18:04 »

Данные разные, нужен какой нибудь универсальный тип, который может содержать любые структуры. Текстовый тип (всмысле ASCII) не интересует, т.к. преобразование в текст лишнее. Думаю скорее всего использовать QByteArray и длину массива (содержимого) вписывать в первые два байта.
Записан
BRE
Гость
« Ответ #10 : Август 23, 2010, 18:07 »

Думаю скорее всего использовать QByteArray и длину массива (содержимого) вписывать в первые два байта.
Ну если разбор бинарных данных тебя интересует больше текстовых, тогда можно и его.
Только длину можно не вписывать, приемник получит этот массив со всеми его атрибутами, т.е. QByteArray::size() будет возвращать количество байт в массиве.
Записан
labview
Гость
« Ответ #11 : Август 23, 2010, 18:09 »

Или всё же QVariant с метатипом будет удобнее?
Записан
BRE
Гость
« Ответ #12 : Август 23, 2010, 18:11 »

Или всё же QVariant с метатипом будет удобнее?
Ты структуры хочешь передавать или это могут быть данные переменной длины или ...
Записан
labview
Гость
« Ответ #13 : Август 23, 2010, 18:12 »

В основном структуры, состоящие из 1-5 элементов. Среди них конечно может встретиться например и QString, который конечно имеет свою длину.
Записан
BRE
Гость
« Ответ #14 : Август 23, 2010, 18:20 »

В основном структуры, состоящие из 1-5 элементов. Среди них конечно может встретиться например и QString, который конечно имеет свою длину.
Для структур можно и QVariant использовать.

Только, IMHO, куда-то ты не туда пошел. Вот меня слот который будет один на всю программу, получать любые данные и исполнять все возможное, честно говоря пугает.
Хорошо ли ты все спроектировал?
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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