Название: QTabWidget+QTreeWidget+... Отправлено: kataklysm от Ноябрь 08, 2010, 12:48 Как правильно добавлять новую вкладку в QTabWidget c новым QTreeWidget.
tabWidget->addTab(new QTreeWidget(),"Блабла") не катит. Проблема в том что QTreeWidget должен быть уникальным в каждой вкладке(для работы с данными в нем). QTreeWidget - n-количество. Код: QTreeWidget **tree Натолкните пожалуйста на мысль, спасибо. Название: Re: QTabWidget+QTreeWidget+... Отправлено: Пантер от Ноябрь 08, 2010, 13:02 А чем tabWidget->addTab(new QTreeWidget(),"Блабла") не катит?
Название: Re: QTabWidget+QTreeWidget+... Отправлено: kataklysm от Ноябрь 08, 2010, 13:09 А чем tabWidget->addTab(new QTreeWidget(),"Блабла") не катит? А разве так можно будет обращаться к каждому QTreeWidget? Если можно то подскажите пожалуйста. Спасибо.Например вот так: Код: QTreeWidgetItem *item = new QTreeWidgetItem; Название: Re: QTabWidget+QTreeWidget+... Отправлено: Пантер от Ноябрь 08, 2010, 13:16 QWidget * QTabWidget::widget ( int index ) const
Т.е. Код
И назначай родителя для QTreeWidget, т.е. tabWidget->addTab(new QTreeWidget (tabWidget),"Блабла") Чтобы избежать утечек. Название: Re: QTabWidget+QTreeWidget+... Отправлено: Авварон от Ноябрь 08, 2010, 13:20 Когда виджет кладется на табвиджет, будет сделан репарент. Иначе как он положится?) Ну или протести, если не лень.
Название: Re: QTabWidget+QTreeWidget+... Отправлено: Пантер от Ноябрь 08, 2010, 13:25 Не важно. Лучше приучиться указывать родителя.
Название: Re: QTabWidget+QTreeWidget+... Отправлено: kataklysm от Ноябрь 08, 2010, 16:49 Код: QTreeWidget *w = qobject_cast <QTreeWidget*> (tabWidget->widget(0)); Название: Re: QTabWidget+QTreeWidget+... Отправлено: Пантер от Ноябрь 08, 2010, 17:11 tabWidget->addTab(w,itemout->text(0)); - это зачем??? w и так уже есть вкладка tabWidget'а.
Название: Re: QTabWidget+QTreeWidget+... Отправлено: Авварон от Ноябрь 08, 2010, 17:30 я разве где-то говорил, что 1 виджет можно добавить несколько раз?) Вроде нет, не надо меня цитировать)
А вот сейчас говорю - один виджет нельзя добавить несколько раз на одну (или не одну) табвиджету Название: Re: QTabWidget+QTreeWidget+... Отправлено: kataklysm от Ноябрь 08, 2010, 18:19 tabWidget->addTab(w,itemout->text(0)); - это зачем??? w и так уже есть вкладка tabWidget'а. Спасибо большое Вам. Все работает. Название: Re: QTabWidget+QTreeWidget+... Отправлено: kataklysm от Ноябрь 10, 2010, 18:06 Код: QTreeWidget *w = qobject_cast <QTreeWidget*> (tabWidget->widget(i)); И как после этого получить доступ к w (QTreeWidget) в другом классе? Извините за глупость если что :) Название: Re: QTabWidget+QTreeWidget+... Отправлено: Пантер от Ноябрь 10, 2010, 18:18 В каком классе? И зачем?
Название: Re: QTabWidget+QTreeWidget+... Отправлено: kataklysm от Ноябрь 10, 2010, 18:24 В каком классе? И зачем? В слоте. По нажатию на кнопку должен обновится список в QTreeWidget, который является в свою очередь "ребенком" у QTabWidget. Спасибо.Название: Re: QTabWidget+QTreeWidget+... Отправлено: Пантер от Ноябрь 10, 2010, 18:26 Посылай сигнал главному окну, а он пусть обновит.
Название: Re: QTabWidget+QTreeWidget+... Отправлено: kataklysm от Ноябрь 10, 2010, 22:04 Посылай сигнал главному окну, а он пусть обновит. Извиняюсь, не совсем понял или плохо объяснил. Добавляю табы к QTabWidget и загружаю первичный данные: Код: tabWidget->addTab(new QTreeWidget(tabWidget),itemout->text(0)); И как обновить данные в 3 w(QTreeWidget), имея родителя QTabWidget, в другом слоте. Например так: Код:
Спасибо. Название: Re: QTabWidget+QTreeWidget+... Отправлено: Пантер от Ноябрь 11, 2010, 09:59 Передай другому классу указатель на qobject_cast <QTreeWidget*> (tabWidget->widget(Х));
Название: Re: QTabWidget+QTreeWidget+... Отправлено: kataklysm от Ноябрь 13, 2010, 19:24 Код: tabWidget->addTab(new QTreeWidget(tabWidget),url_name.value(d)); Одного не пойму, как в таком случае очищать память от item при удалении вкладки в QTabWidget? При этом QTreeWidget уже является дочерним окном у QTabWidget. И будет ли вообще освободаться память при закрытии вкладки с помощью removeTab(int index). Спасибо. При QTreeWidgetItem *item = new QTreeWidgetItem(w) Программа вываливается. |