Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] QLineEdit и данные 
V
    Опции темы
dix75
Дата 8.3.2010, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 462
Регистрация: 17.7.2007

Репутация: 1
Всего: 1



Добрый вечер!

Ситуация в следующем у меня имеется около 20 QLineEditов.
Также имеется общий слот для обработки сигналов от этих эдитов.

Но как определить в каком конкретно произошло событие?

sender - не помогает. (т.к. в зависимости от эдита могут далее возбуждаются другие сигналы)

в QAction есть метод setData в который я могу поместить уникальный id
но в эдитах такого нет.

Едиственное, что приходит на ум это сделать свич и проверять по указателю каждый эдит.


--------------------
save your mind
PM MAIL   Вверх
SABROG
Дата 8.3.2010, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(dix75 @  8.3.2010,  22:58 Найти цитируемый пост)
sender - не помогает. (т.к. в зависимости от эдита могут далее возбуждаются другие сигналы)

Тут по подробнее. Ты хочешь сказать, что никак не можешь узнать кто прислал сигнал?

Цитата(dix75 @  8.3.2010,  22:58 Найти цитируемый пост)
в QAction есть метод setData в который я могу поместить уникальный id
но в эдитах такого нет.


А как это тебе поможет, если тебе sender() не подходит? Если не знаешь кто прислал сигнал, то не знаешь у кого забирать данные.

Это сообщение отредактировал(а) SABROG - 8.3.2010, 23:04


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
dix75
Дата 8.3.2010, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 462
Регистрация: 17.7.2007

Репутация: 1
Всего: 1



Цитата(SABROG @  8.3.2010,  23:03 Найти цитируемый пост)
Тут по подробнее. Ты хочешь сказать, что никак не можешь узнать кто прислал сигнал?

Нет, узнать я могу кто.
Некий объект Эдит у которого есть определенные данные (например text)

Как бы точнее объяснить.
У меня каждый Эдит должен взаимодействовать с определенным объектом. т.е выходит что каждый сигнал эдита соединяется с объектом, но реализация слотов идентична для всех сигналов.
разница только в id эдита.
Просто мне неохота да и неверно писать 20 идентичных слота.

Добавлено через 5 минут и 32 секунды
т.е. получается 20 эдитов такого характера

Код

void mb::set_first(const QString& str)
{
   emit (edit(mb::first, str));
}

void mb::set_second(const QString& str)
{
   emit ( edit (mb::second, str));
}


Добавлено через 11 минут и 54 секунды
Хуже того объекты с которыми соединются слоты могут и не существовать.
Поэтому и необходим один глобальный слот.


--------------------
save your mind
PM MAIL   Вверх
SABROG
Дата 8.3.2010, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(dix75 @  8.3.2010,  23:23 Найти цитируемый пост)
Хуже того объекты с которыми соединются слоты могут и не существовать.

Связь рвется при уничтожении объекта. Главное так не делать:

Код

deleteLater();
emit Signal();


И не удалять объекты в слотах. QSignalMapper используешь?


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
borisbn
Дата 8.3.2010, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 48
Всего: 135



Пробовал QObject::setProperty() и QObject::property() для едитов?
В property можно записать например адрес связанного с едитом объекта

Это сообщение отредактировал(а) borisbn - 9.3.2010, 05:45


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
dix75
Дата 9.3.2010, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 462
Регистрация: 17.7.2007

Репутация: 1
Всего: 1



SABROG, 

У меня есть форма с едитами
и есть скрытый пулл объектов

Если объект существует он отображает данные едита в противном случае ничего нет

Ситуация похожа на MVC




--------------------
save your mind
PM MAIL   Вверх
SABROG
Дата 9.3.2010, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Какой объект? Edit отображает данные объекта или свои собственные данные? Текст, который отображает Edit это данные Edit'a? Какова реальная задача?


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
dix75
Дата 9.3.2010, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 462
Регистрация: 17.7.2007

Репутация: 1
Всего: 1



Цитата(SABROG @  9.3.2010,  12:36 Найти цитируемый пост)
Какой объект? 

Собственный (график на QWidget)

Цитата(SABROG @  9.3.2010,  12:36 Найти цитируемый пост)
Edit отображает данные объекта или свои собственные данные? 

собственные

Цитата(SABROG @  9.3.2010,  12:36 Найти цитируемый пост)
Текст, который отображает Edit это данные Edit'a? 

да

Цитата(SABROG @  9.3.2010,  12:36 Найти цитируемый пост)
Какова реальная задача?

Отображение данных едитов при вводе их пользователем автоматически отображались графически


--------------------
save your mind
PM MAIL   Вверх
SABROG
Дата 9.3.2010, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



Цитата(dix75 @  9.3.2010,  12:44 Найти цитируемый пост)
Отображение данных едитов при вводе их пользователем автоматически отображались графически 

Чем QSignalMapper не подходит?


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
dix75
Дата 9.3.2010, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 462
Регистрация: 17.7.2007

Репутация: 1
Всего: 1



Цитата(SABROG @  9.3.2010,  13:00 Найти цитируемый пост)
Чем QSignalMapper не подходит?

Почему подходит.

но вариант с QObject::setProperty() и QObject::property() 
требует меньше строк в реализации.


--------------------
save your mind
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0523 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.