Название: Как обратиться к переменной, определенной в родителе? Отправлено: track от Январь 08, 2007, 11:16 Не уверен, что по адресу, т.к. в C++ новичок.
Какие есть способы, когда надо из потомка (QWidget) прочитать текущее значение переменной родителя (QVGroupBox) ?? Речь идет не о наследовании, а о "new QWidget(this);" в конструкторе. Чего-то сам додуматься не могу :( Qt 3.3.3 Название: Как обратиться к переменной, определенной в родителе? Отправлено: bigirbis от Январь 08, 2007, 11:38 1. Вариант стандартный - сохранить где-либо указатель на объект.
2. Вариант нестандартный - вот такая штука в Qt3 есть - void * qt_find_obj_child ( QObject * parent, const char * type, const char * name ) Название: Как обратиться к переменной, определенной в родителе? Отправлено: track от Январь 08, 2007, 14:16 Спасибо, теперь дошло :=))
Сделал 1-ым способом. Название: Как обратиться к переменной, определенной в родителе? Отправлено: Alex03 от Январь 08, 2007, 15:09 Цитировать 1. Вариант стандартный - сохранить где-либо указатель на объект. А чё его сохранять если он QObject * parent()? Вариант 3 чисто qt-шный: потомок от (QWidget) генерит сигнал родитель (QVGroupBox) при создании потомока коннектит его сигнал на свой слот. ИМХО Это правильный подход если потомок "говорит о чём то" родителю (у меня тут значение на 23 изменилось). Если "спрашивает о чём-то" то уже не очень правильно. :) Тут может стоит логику поменять. В общем можно вопрос ещё поконкретней задать. :) Название: Как обратиться к переменной, определенной в родителе? Отправлено: bigirbis от Январь 08, 2007, 15:24 3 вариант не для всей логики подходит, но для многих случаев - согласен. Иногда просто нецелесообразно создавать кучу слотов и запихивать измененные данные в к-л контекст, если значения можно просто получить в одном или нескольких значащих слотах.
Цитировать А чё его сохранять если он QObject * parent()? Хождения по парентам и чайлдам в стандартном случае может доставить лишний геморрой, это-то при малом весе указателя. Такой вариант удобен при каком-нибудь генерировании виджетов и пр. Название: Как обратиться к переменной, определенной в родителе? Отправлено: track от Январь 08, 2007, 19:30 Цитировать А чё его сохранять если он QObject * parent()? Вот у меня так не получилось почему-то. Покажите плз, как правильно его использовать. Сделал так: Код:
xtime определен как public: Xtime *xtime; а XTime это класс-наследник от QVGroupBox. PS. - делаю аналог виндовых часов с календариком, которые появляются если тыкнуть на часиках в таскбаре. Хочу себе на линух такие же :=) По задумке, родительский виджет следит за временем, а в нужые моменты посылает update() в виджет аналоговых часов и в виджет цифровых. Ну и когда они сами перерисовываются, тоже ведь надо брать текущее время -- не по отдельности же в каждом виджете его добывать от системы... Так что 3-ий вариант не подходит. Название: Как обратиться к переменной, определенной в родителе? Отправлено: Steven_Orko от Январь 08, 2007, 19:56 Возможно тебе это поможет. Я все запихнул в один файл, но ты можешь разбить на два: на заголовочный и на файл реализации (*.h и *.cpp):
Код:
|