crossplatform.ru

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

4 страниц V   1 2 3 > »   
Ответить в данную темуНачать новую тему
> как идентифицировать сигнал, идентифицировать сигнал
fantom
  опции профиля:
сообщение 29.1.2009, 16:39
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 47
Регистрация: 29.1.2009
Пользователь №: 515

Спасибо сказали: 1 раз(а)




Репутация:   1  


Здравствуйте. Есть проблема, которую пока никак не могу решить. Соединяю сигнал со слотом, высылаю сигнал - вызывается слот. Как узнать имя сигнала вызвавшего данный слот. Единственное что пока пришло в голову как то использовать класс QSignalSpy. Но как пока не знаю.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 29.1.2009, 16:45
Сообщение #2


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


Цитата(fantom @ 29.1.2009, 16:39) *
Здравствуйте. Есть проблема, которую пока никак не могу решить. Соединяю сигнал со слотом, высылаю сигнал - вызывается слот. Как узнать имя сигнала вызвавшего данный слот. Единственное что пока пришло в голову как то использовать класс QSignalSpy. Но как пока не знаю.


может проще передавать имя сигнала параметром в самом сигнале???

Сообщение отредактировал kwisp - 29.1.2009, 16:46
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
fantom
  опции профиля:
сообщение 29.1.2009, 16:57
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 47
Регистрация: 29.1.2009
Пользователь №: 515

Спасибо сказали: 1 раз(а)




Репутация:   1  


Такой вариант меня не очень устраивает так как мне необходимо идентифицировать стандартные сигналы qt. Например от кнопок и др элементов.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 29.1.2009, 17:23
Сообщение #4


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Посмотри в сторону: void QMetaObject::connectSlotsByName ( QObject * object ) [static]
Кажется это то, что тебе нужно. Кажется. :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
fantom
  опции профиля:
сообщение 29.1.2009, 18:05
Сообщение #5


Студент
*

Группа: Участник
Сообщений: 47
Регистрация: 29.1.2009
Пользователь №: 515

Спасибо сказали: 1 раз(а)




Репутация:   1  


Посмотрел на описание connectSlotsByName ( QObject * object ) .
Этот метод выполняет связку всех сигналов объекта передаваемого в параметре и его дочерних объектов со слотами имена которых строятся по следующему принципу void on_<widget name>_<signal name>(<signal parameters>);

Вот только не очень ясно как это тут можно применить. Мне бы нужно просто имя сигнала в виде const char* узнать.

Или может я просто чего то не понимаю?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 29.1.2009, 20:14
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(fantom @ 29.1.2009, 19:39) *
Как узнать имя сигнала вызвавшего данный слот.
резонный вопрос: зачем? какова конечная цель?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 29.1.2009, 20:45
Сообщение #7


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(Litkevich Yuriy @ 29.1.2009, 20:14) *
резонный вопрос: зачем? какова конечная цель?
Цитата(fantom @ 29.1.2009, 16:57) *
мне необходимо идентифицировать стандартные сигналы qt. Например от кнопок и др элементов.
По всей видимости обычная дебажная следилка... :)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 29.1.2009, 20:48
Сообщение #8


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(ViGOur @ 29.1.2009, 23:45) *
дебажная следилка
QSignalSpy

но я не думаю, что в этом причина. Знать сигнал на практике редко нужно, нужен объект пославший сигнал.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 29.1.2009, 21:05
Сообщение #9


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Объект пославший сигнал можно получить QObject::sender.
Но вот и правда как получить имя сигнала? :)

Сообщение отредактировал ViGOur - 29.1.2009, 21:06
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
fantom
  опции профиля:
сообщение 30.1.2009, 11:28
Сообщение #10


Студент
*

Группа: Участник
Сообщений: 47
Регистрация: 29.1.2009
Пользователь №: 515

Спасибо сказали: 1 раз(а)




Репутация:   1  


Конечная цель не дебажная следилка. Есть заказ на крупное клиент-серверное приложение в котором тысячи всевозможных элементов на формах в том числе нестандартных. На самом деле пытаемся разработать набор библиотек для создания клиент серверной технологии основанной на концепции MVC. Одно из условий наличие тонкового клиента. Так вот хочется максимально упростить написание клиентской части и так как там не предусматривается никакой логики разработку основной части клиента хочется перенести в qt designer. Суть в том что все необходимые для нас виджеты будут переопределены и будут привязаны своими свойствами к свойствам объектов описание которых находится во внешнем xml файле. Эти объекты динамически подгружаются сервером и во време работы происходит автоматическая синхронизация сервера с клиентом, что позволяет избавится от кучи лишней работы связанной с написанием клиента и предоставить ее дизайнеру. Так вот отправка запросов от клиента будет идти по сигналу от любого виджета на форме. Связка сигналов и необходимых групп свойств для запроса на изменении делается в дизайнере. Все эти сигналы планируется связать с одним слотом который будет выполнять парсинг созданных в дизайнере правок и отправки необходимых запросов серверу. Проблема в том чтобы определить от какого объекта и какой сигнал вызвал этот слот.. Причем проблему хоть как то извращенно но надо решить. Может у кого какие идеи есть?

Кстати если реализация будет успешной реализацию данной технологии выложим под GPL.

Ладно щас буду копать в сторону QSignalSpy.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

4 страниц V   1 2 3 > » 
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


9 чел. читают эту тему (гостей: 9, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 30.11.2024, 5:10