Russian Qt Forum
Ноябрь 24, 2024, 17:38
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Два сигнала в один слот
Страниц: [
1
]
2
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Два сигнала в один слот (Прочитано 8498 раз)
PulSar.CE3194694
Гость
Два сигнала в один слот
«
:
Август 13, 2010, 21:27 »
Добрый день!
Вопрос такой: можно отправить два и более сигналов в один слот? Например, когда оба сигнала передают передают какие-нибудь значения.
Записан
SimpleSunny
Гость
Re: Два сигнала в один слот
«
Ответ #1 :
Август 13, 2010, 22:31 »
Соединить необходимое количество сигналов с одним слотом.
Записан
lit-uriy
Джедай : наставник для всех
Offline
Сообщений: 3880
Re: Два сигнала в один слот
«
Ответ #2 :
Август 13, 2010, 22:52 »
>>Вопрос такой: можно отправить два и более сигналов в один слот?
Ответ: да
Записан
Юра.
PulSar.CE3194694
Гость
Re: Два сигнала в один слот
«
Ответ #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
Гость
Re: Два сигнала в один слот
«
Ответ #4 :
Август 17, 2010, 14:08 »
А Вы различные по типу и количеству параметры передаете.
Записан
labview
Гость
Re: Два сигнала в один слот
«
Ответ #5 :
Август 17, 2010, 14:09 »
Либо используй несколько слотов, на каждый тип данных, либо один слот, но тогда нужно передавать "неопределённый" тип данных, например Byte Array, который в дальнейшем в слоте преобразуется в нужный тип данных с помощью кастинга. О типе данных тоже нужно сообщать слоту с помощью еньюмератора например.
Могу ошибатьса, я сам новичёк...
Записан
Anarion
Гость
Re: Два сигнала в один слот
«
Ответ #6 :
Август 17, 2010, 14:12 »
Ну если уж прямо нужно все сигналы в один этот слот, то сделай для слота все возможные параметры, которые требуется получить от всех сигналов, а при эмите сигналов ненужные в данном контретном случае параметры отправляй нулевыми. Но только потом придется разбираться, сигнал с какими параметрами пришел. Так что все таки лучше на каждый набор параметров свой слот.
Записан
labview
Гость
Re: Два сигнала в один слот
«
Ответ #7 :
Август 23, 2010, 17:47 »
Подскажите пожалуйста какой тип данных можно использовать для передачи любых данных. Подойдёт ли QVariant? Или стоит попробовать QByteArray? Может быть лучше взять union?
Записан
BRE
Гость
Re: Два сигнала в один слот
«
Ответ #8 :
Август 23, 2010, 17:49 »
Цитата: labview от Август 23, 2010, 17:47
Подскажите пожалуйста какой тип данных можно использовать для передачи любых данных. Подойдёт ли QVariant? Или стоит попробовать QByteArray? Может быть лучше взять union?
Ты по подробней расскажи про данные.
А вообще данные можно даже в текстовом виде передавать.
Записан
labview
Гость
Re: Два сигнала в один слот
«
Ответ #9 :
Август 23, 2010, 18:04 »
Данные разные, нужен какой нибудь универсальный тип, который может содержать любые структуры. Текстовый тип (всмысле ASCII) не интересует, т.к. преобразование в текст лишнее. Думаю скорее всего использовать QByteArray и длину массива (содержимого) вписывать в первые два байта.
Записан
BRE
Гость
Re: Два сигнала в один слот
«
Ответ #10 :
Август 23, 2010, 18:07 »
Цитата: labview от Август 23, 2010, 18:04
Думаю скорее всего использовать QByteArray и длину массива (содержимого) вписывать в первые два байта.
Ну если разбор бинарных данных тебя интересует больше текстовых, тогда можно и его.
Только длину можно не вписывать, приемник получит этот массив со всеми его атрибутами, т.е. QByteArray::size() будет возвращать количество байт в массиве.
Записан
labview
Гость
Re: Два сигнала в один слот
«
Ответ #11 :
Август 23, 2010, 18:09 »
Или всё же QVariant с метатипом будет удобнее?
Записан
BRE
Гость
Re: Два сигнала в один слот
«
Ответ #12 :
Август 23, 2010, 18:11 »
Цитата: labview от Август 23, 2010, 18:09
Или всё же QVariant с метатипом будет удобнее?
Ты структуры хочешь передавать или это могут быть данные переменной длины или ...
Записан
labview
Гость
Re: Два сигнала в один слот
«
Ответ #13 :
Август 23, 2010, 18:12 »
В основном структуры, состоящие из 1-5 элементов. Среди них конечно может встретиться например и QString, который конечно имеет свою длину.
Записан
BRE
Гость
Re: Два сигнала в один слот
«
Ответ #14 :
Август 23, 2010, 18:20 »
Цитата: labview от Август 23, 2010, 18:12
В основном структуры, состоящие из 1-5 элементов. Среди них конечно может встретиться например и QString, который конечно имеет свою длину.
Для структур можно и QVariant использовать.
Только, IMHO, куда-то ты не туда пошел. Вот меня слот который будет один на всю программу, получать любые данные и исполнять все возможное, честно говоря пугает.
Хорошо ли ты все спроектировал?
Записан
Страниц: [
1
]
2
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...