Russian Qt Forum

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



Название: Как спрятать страницу у QTabWidget?
Отправлено: White Owl от Май 04, 2009, 19:13
Имеется стандартный QTabWidget с несколькими страницами. Как в рантайме их прятать?
Код:
tabWidget->widget(1)->hide();
ничего не происходит...
Использую Qt 4.5.1


Название: Re: Как спрятать страницу у QTabWidget?
Отправлено: pastor от Май 04, 2009, 19:24
Никак. Используй QTabWidget::removeTab

Цитировать
Removes the tab at position index from this stack of widgets. The page widget itself is not deleted.


Название: Re: Как спрятать страницу у QTabWidget?
Отправлено: White Owl от Май 04, 2009, 20:58
А потом снова addTab/insertTab? И заново определять заголовки страниц?
Как то это неправильно....


Название: Re: Как спрятать страницу у QTabWidget?
Отправлено: Пантер от Май 05, 2009, 06:15
Может лучше неактивной делать? setEnabled().


Название: Re: Как спрятать страницу у QTabWidget?
Отправлено: White Owl от Май 05, 2009, 18:16
Если просто запрещать страницы, то они остаются видимыми...
Впрочем, вот ГУИ который я пытаюсь нарисовать:
У меня на диалоге слева есть дерево объектов (товары собранные в группы), а справа должно быть описание объекта выбранного в дереве. Для товара есть описание товара, список контрагентов которые с этим товаром работают, склады где товар лежит и тд и тп. А для группы может быть только описание. Какие товары в эту группу входят.
Вот и хочется чтобы страничка "Описание" была видна всегда, потому что она имеет смысл и для товара и для группы. А список контрагентов для группы не нужен и хочется его прятать...


Название: Re: Как спрятать страницу у QTabWidget?
Отправлено: Пантер от Май 05, 2009, 19:16
Вполне нормально делать просто неактивным.


Название: Re: Как спрятать страницу у QTabWidget?
Отправлено: CrazyDeath от Май 11, 2009, 02:37
Недавно на работе затребовали похожее зделать
может поможет.


Название: Re: Как спрятать страницу у QTabWidget?
Отправлено: SABROG от Май 11, 2009, 09:42
Недавно на работе затребовали похожее зделать
может поможет.

Тут, по моему, достаточно было этот кусок выложить:

Код
C++ (Qt)
void Dialog::on_actionShowTub_triggered(bool status)
{
if(status)
{
ui.tabWidget->insertTab(1,insertTab,*iconSettings,"Settings");
settings->show();
}
else
{
settings->accept();
ui.tabWidget->removeTab(1);
}
}
 

Об этом методе уже говорили выше, но человек не нравится, что надо имя ярлыка заново прописывать.

Кстати название вкладки можно впихнуть в динамическое свойство QObject'a и забирать оттуда при insertTab.


Название: Re: Как спрятать страницу у QTabWidget?
Отправлено: nixman05 от Май 11, 2009, 14:35
Попробуй
Код:
tabWidget->widget(1)->setHidden(true);


Название: Re: Как спрятать страницу у QTabWidget?
Отправлено: spirit от Май 11, 2009, 14:40
Попробуй
Код:
tabWidget->widget(1)->setHidden(true);
так таб-то останется.


Название: Re: Как спрятать страницу у QTabWidget?
Отправлено: CrazyDeath от Май 11, 2009, 20:15
Цитировать
Кстати название вкладки можно впихнуть в динамическое свойство QObject'a и забирать оттуда при insertTab.
Тогда можно пойти дальше и отнаследовать класс QTabWidget и перенести все это в метод insertTab.