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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: sender() help !  (Прочитано 3211 раз)
yesrus
Гость
« : Май 14, 2009, 14:04 »

Здравствуйте!
Qt 4.5.1
Вобщем проблема:
Есть программа которая создает динамически кнопки(при этом кнопка это кастом класс который наследуется от пашбаттона (добавленны некоторые функции типа мигания + стили "вшиваются" в кнопки для удобства)
Программа читает конфиг файл, в котором есть имена кнопок и некие параметры-параметров 2, оба типа QString-все кнопки подключены к одному слоту.
При создании кнопок эти 2 параметра передаются им т.е. если имя кнопки button то я могу получить эти параметры к примеру вызвав функцию
Код
C++ (Qt)
QString data;
data = button->data1();
Задача состоит в том, чтобы в слоте который вызывается нажатием кнопок можно было эти параметры получить...полных и рабочих примеров не тут не на форуме троллей не нашел..везде обрывки которые не работают..  Грустный Нашел более-менее пример..но опять же он не работает...(fbutton это моя кастом кнопка(класс наследник от пашбаттона))
Код
C++ (Qt)
void gui::mainslot() {
QString channel;
  QObject *obj = sender();
   if (!obj) return;
   if (qobject_cast<fbutton *>(obj)) {
       channel = obj->channel();
 
   }
}
help...покажите пожалуйста рабочий кусок кода в котором с помощью sender передаются параметры из вызывающего виджета (при условии, что виджет кастом...т.е. в нем "зашиты" int \QString и т.д. параметры)
Записан
Rcus
Гость
« Ответ #1 : Май 14, 2009, 14:11 »

http://lingvo.yandex.ru/en?text=push&st_translate=on

Q_OBJECT в объявлении класса есть?

А что именно не работает? sender() возвращает 0 или qobject_cast? И вообще что возвращается sender()->metaObject()->className()?
« Последнее редактирование: Май 14, 2009, 14:20 от Rcus » Записан
yesrus
Гость
« Ответ #2 : Май 14, 2009, 14:27 »

error: 'class QObject' has no member named 'channel'
функция channel в классе fbutton есть 100%
Записан
Rcus
Гость
« Ответ #3 : Май 14, 2009, 14:29 »

ааааааааааааааааааааааааааааааааааааааааааааааа

ну дык конечно же Улыбающийся
Код
C++ (Qt)
if (fbutton *button = qobject_cast<fbutton *>(sender())) {
   button->...
}
 
Записан
yesrus
Гость
« Ответ #4 : Май 14, 2009, 14:38 »

Работает, спасибо!

п.с. а без использования return в функции параметр из fbutton нельзя прочитать?
« Последнее редактирование: Май 14, 2009, 14:45 от yesrus » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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