Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Morgoth от Май 04, 2008, 22:19



Название: Работа с объектами размещенными на QTabWidget
Отправлено: Morgoth от Май 04, 2008, 22:19
помогите разобраться со следующим вопросом

допустим у меня есть класс АAA который происходит от QWidget:
Код:
class AAA: public QWidget
{
 int a;
 int b;
 ...
};

есть объект tab типа QTabWidget.
Код:
QTabWidget tab;
я хочу размещать на закладках объекта tab объекты типа АAA и делаю это примерно так:
Код:
AAA * TempTab;
TempTab = new AAA();
tab.addTab(TempTab,QString("tab"));
вопрос состоит в следующем, как мне имея объект tab обращаться к объектам типа AAA размещенным на закладках. ведь к примеру функция tab.currentWidget() возвращает указатель на объект типа QWidget. Что-то я совсем запутался, помогите разобраться :-(


Название: Re: Работа с объектами размещенными на QTabWidget
Отправлено: DenKor от Май 04, 2008, 22:43
Используй механизм сигналов и слотов.


Название: Re: Работа с объектами размещенными на QTabWidget
Отправлено: pastor от Май 04, 2008, 23:24
ведь к примеру функция tab.currentWidget() возвращает указатель на объект типа QWidget. Что-то я совсем запутался, помогите разобраться :-(

А в чем проблема то? Приведи указатель типа QWidget к AAA и будет тебе счастье ;) Приведение можно выполниться при помощи qobject_cast


Название: Re: Работа с объектами размещенными на QTabWidget
Отправлено: Morgoth от Май 06, 2008, 09:27
А в чем проблема то? Приведи указатель типа QWidget к AAA и будет тебе счастье ;) Приведение можно выполниться при помощи qobject_cast
спасибо за совет. а вообще это нормальная ситуация поступать таким образом? т.е перед работой с виджетом получать сначала ссылку на него, потом приводить его к другому типу, а только потом использовать? слишком громоздко получается. может имеет смысл хранить где-то отдельно ссылки на свои виджеты?


Название: Re: Работа с объектами размещенными на QTabWidget
Отправлено: Вячеслав от Май 06, 2008, 09:32
А это зависит от того , что тебе нужно ;) Мне проще пробежаться c *_cast<>() - сразу ясно жив ли объект и того-ли он типа(при условии отсутствия ляпов в работе с памятью ;) ). Хранить указатели где-нибудь ... ну можно наверное ... пока объекты разных типов на вкладках не появяться - опять придеться извращаться ;) Так-что IMHO cast - лучше  :-*