Russian Qt Forum

Qt => Общие вопросы => Тема начата: yesrus от Май 14, 2009, 14:04



Название: sender() help !
Отправлено: 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 и т.д. параметры)


Название: Re: sender() help !
Отправлено: Rcus от Май 14, 2009, 14:11
http://lingvo.yandex.ru/en?text=push&st_translate=on

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

А что именно не работает? sender() возвращает 0 или qobject_cast? И вообще что возвращается sender()->metaObject()->className()?


Название: Re: sender() help !
Отправлено: yesrus от Май 14, 2009, 14:27
error: 'class QObject' has no member named 'channel'
функция channel в классе fbutton есть 100%


Название: Re: sender() help !
Отправлено: Rcus от Май 14, 2009, 14:29
ааааааааааааааааааааааааааааааааааааааааааааааа

ну дык конечно же :)
Код
C++ (Qt)
if (fbutton *button = qobject_cast<fbutton *>(sender())) {
   button->...
}
 


Название: Re: sender() help !
Отправлено: yesrus от Май 14, 2009, 14:38
Работает, спасибо!

п.с. а без использования return в функции параметр из fbutton нельзя прочитать?