Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: QTabWidget
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt GUI
zss
Есть N вкладок, которые могут переключаться через QAction.
Хотел несколько закладок сделать невидимыми. Но данный компонент не позволяет это сделать.
Можно лишь добавлять и удалять закладки. Но тогда изменяются логические индексы закладок.
В результате плывут индексы и иконки закладок.

1. Можно ли как делать закладки невидимыми, для того, чтоб логические индексы сохранялись как у компонентов-списков.
2. Если нет, то можно ли как задать логические индексы.
SABROG
Цитата(zss @ 12.6.2009, 0:31) *
Можно лишь добавлять и удалять закладки


Я не знаю какая у тебя задача, но еще можно сделать вкладку не активной. Как бы там ни было ты можешь воспользоваться динамическими свойствами QObject'a, чтобы пронумеровать свои вкладки в нужном тебе порядке:
tabWidget->widget(i)->setProperty("logicalIndex", j);


Цитата(zss @ 12.6.2009, 0:31) *
и иконки закладок.


Это как?
BRE
Цитата(zss @ 12.6.2009, 0:31) *
Есть N вкладок, которые могут переключаться через QAction.
Хотел несколько закладок сделать невидимыми. Но данный компонент не позволяет это сделать.
Можно лишь добавлять и удалять закладки. Но тогда изменяются логические индексы закладок.
В результате плывут индексы и иконки закладок.

1. Можно ли как делать закладки невидимыми, для того, чтоб логические индексы сохранялись как у компонентов-списков.
2. Если нет, то можно ли как задать логические индексы.

Скажем, есть несколько виджетов-страниц, у которых установлены свойства windowIcon и windowTitle.
При формировании QTabWidget добавляем только те которые нужны в данный момент, а иконку и текст закладки берем из самого виджета страницы.
PageStart::PageStart(...)
{
    setWindowIcon( QIcon(...) );
    setWindowTitle( tr( "Start page" ) );
    ...
}

PageSetup::PageSetup(...)
{
    setWindowIcon( QIcon(...) );
    setWindowTitle( tr( "Setup" ) );
    ...
}

TabWindow::setupPages()
{
    addTab( m_startPage, m_startPage->windowIcon(), m_startPage->windowTitle() );
    ...
}
zss
Цитата(zss @ 12.6.2009, 0:31) *
Я не знаю какая у тебя задача, но еще можно сделать вкладку не активной

не пойдет

Цитата(zss @ 12.6.2009, 0:31) *
Как бы там ни было ты можешь воспользоваться динамическими свойствами QObject'a, чтобы пронумеровать свои вкладки в нужном тебе порядке:

tabWidget->widget(i)->setProperty("logicalIndex", j);

попробую

Цитата(zss @ 12.6.2009, 0:31) *
Это как?


ну, например, у меня при удалении смещаются на одну закладку вправо

Цитата(SABROG @ 12.6.2009, 10:30) *
Скажем, есть несколько виджетов-страниц, у которых установлены свойства windowIcon и windowTitle.
При формировании QTabWidget добавляем только те которые нужны в данный момент, а иконку и текст закладки берем из самого виджета страницы.


поможет ?
SABROG
Цитата(zss @ 12.6.2009, 11:06) *
ну, например, у меня при удалении смещаются на одну закладку вправо


Кто смещает, Qt или ты?
zss
Цитата(zss @ 12.6.2009, 11:06) *
Кто смещает, Qt или ты?

qt
SABROG
Цитата(zss @ 12.6.2009, 11:15) *
Цитата(zss @ 12.6.2009, 11:06) *
Кто смещает, Qt или ты?

qt

Это баг чтоль? Приложи минимальный пример.
Litkevich Yuriy
Цитата(SABROG @ 12.6.2009, 14:17) *
Это баг чтоль? Приложи минимальный пример.
при удалении средней вкладки из нескольких, например, трёх. Третья займёт место второй вот и смещение.
Просто zss как-то странно ими пользуется. Иконка принадлежать должна виджету данной вкладки.
SABROG
Цитата(Litkevich Yuriy @ 12.6.2009, 12:03) *
Третья займёт место второй вот и смещение.


Ну вот и я понять не могу. Если скажем 3 вкладки с тремя иконками: Туалет, Женская баня, Мужская Баня. То при удалении вкладки с "Женской баней" на виджете с "Мужской баней" будет иконка "Женская баня"? И как следствие женщины будут попадать в мужскую баню, ибо вывеска. :lol:
Litkevich Yuriy
Надо исходник. Но я думаю Qt здесь непричём.
zss
в общем решил динамически добавлять вкладки.
Посмотрел код, который генерит интегратор
        tabFirst = new QWidget();
        tabFirst->setObjectName(QString::fromUtf8("tabFirst"));
        apLayout = new QGridLayout(tabFirst);
        apLayout->setSpacing(1);
        apLayout->setMargin(1);
        apLayout->setObjectName(QString::fromUtf8("apLayout"));
        apLayout->setSizeConstraint(QLayout::SetDefaultConstraint);
        tabWidget->addTab(tabFirst, icon11, QString());


Меня смутило создание tabFirst. В конструкторе не передается указатель на родителя.
то есть подразумевается, что страница не будет удаляться ?

Иначе налицо утечка памяти.

З.Ы. Или QTabWidget сам будет разрушать страницы ?
Litkevich Yuriy
Цитата(zss @ 13.6.2009, 22:26) *
Меня смутило создание tabFirst. В конструкторе не передается указатель на родителя.
то есть подразумевается, что страница не будет удаляться ?

Иначе налицо утечка памяти.

З.Ы. Или QTabWidget сам будет разрушать страницы ?
А если прочитать описание?
Хотябы со слов "The normal way to use QTabWidget is to do the following:"
zss
Цитата(zss @ 13.6.2009, 19:26) *
Хотябы со слов "The normal way to use QTabWidget is to do the following:"

не дочитал :)

P.S. проблемы с Ангельским :)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.