Версия для печати темы
Форум на CrossPlatform.RU _ Qt GUI _ QTabWidget
Автор: zss 11.6.2009, 23:31
Есть N вкладок, которые могут переключаться через QAction.
Хотел несколько закладок сделать невидимыми. Но данный компонент не позволяет это сделать.
Можно лишь добавлять и удалять закладки. Но тогда изменяются логические индексы закладок.
В результате плывут индексы и иконки закладок.
1. Можно ли как делать закладки невидимыми, для того, чтоб логические индексы сохранялись как у компонентов-списков.
2. Если нет, то можно ли как задать логические индексы.
Автор: SABROG 12.6.2009, 9:30
Цитата(zss @ 12.6.2009, 0:31)
Можно лишь добавлять и удалять закладки
Я не знаю какая у тебя задача, но еще можно сделать вкладку не активной. Как бы там ни было ты можешь воспользоваться динамическими свойствами QObject'a, чтобы пронумеровать свои вкладки в нужном тебе порядке:
tabWidget->widget(i)->setProperty("logicalIndex", j);
Цитата(zss @ 12.6.2009, 0:31)
и иконки закладок.
Это как?
Автор: BRE 12.6.2009, 9:36
Цитата(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 12.6.2009, 10:06
Цитата(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 12.6.2009, 10:11
Цитата(zss @ 12.6.2009, 11:06)
ну, например, у меня при удалении смещаются на одну закладку вправо
Кто смещает, Qt или ты?
Автор: zss 12.6.2009, 10:15
Цитата(zss @ 12.6.2009, 11:06)
Кто смещает, Qt или ты?
qt
Автор: SABROG 12.6.2009, 10:17
Цитата(zss @ 12.6.2009, 11:15)
Цитата(zss @ 12.6.2009, 11:06)
Кто смещает, Qt или ты?
qt
Это баг чтоль? Приложи минимальный пример.
Автор: Litkevich Yuriy 12.6.2009, 11:03
Цитата(SABROG @ 12.6.2009, 14:17)
Это баг чтоль? Приложи минимальный пример.
при удалении средней вкладки из нескольких, например, трёх. Третья займёт место второй вот и смещение.
Просто
zss как-то странно ими пользуется. Иконка принадлежать должна виджету данной вкладки.
Автор: SABROG 12.6.2009, 11:12
Цитата(Litkevich Yuriy @ 12.6.2009, 12:03)
Третья займёт место второй вот и смещение.
Ну вот и я понять не могу. Если скажем 3 вкладки с тремя иконками: Туалет, Женская баня, Мужская Баня. То при удалении вкладки с "Женской баней" на виджете с "Мужской баней" будет иконка "Женская баня"? И как следствие женщины будут попадать в мужскую баню, ибо вывеска.
Автор: Litkevich Yuriy 12.6.2009, 11:23
Надо исходник. Но я думаю Qt здесь непричём.
Автор: zss 13.6.2009, 18:26
в общем решил динамически добавлять вкладки.
Посмотрел код, который генерит интегратор
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 13.6.2009, 19:30
Цитата(zss @ 13.6.2009, 22:26)
Меня смутило создание tabFirst. В конструкторе не передается указатель на родителя.
то есть подразумевается, что страница не будет удаляться ?
Иначе налицо утечка памяти.
З.Ы. Или QTabWidget сам будет разрушать страницы ?
А если прочитать http://QTabWidget?
Хотябы со слов "
The normal way to use QTabWidget is to do the following:"
Автор: zss 13.6.2009, 20:26
Цитата(zss @ 13.6.2009, 19:26)
Хотябы со слов "The normal way to use QTabWidget is to do the following:"
не дочитал
P.S. проблемы с Ангельским
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)