Russian Qt Forum
Ноябрь 26, 2024, 15:48 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Оформление меню  (Прочитано 7388 раз)
deaks
Гость
« : Октябрь 12, 2011, 14:20 »

Добрый день!

Появилось желание создать в программе меню табов как в креаторе:


Начал с обычного QTabWidget, по крайней мере там можно задать положение табов, в данном случае справа. Раскрасить сам таб с помощью CSS проблем нет. Но как можно сделать расположение иконки над текстом? ну и соответственно текст горизонтальным?
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #1 : Октябрь 12, 2011, 14:27 »

А почему QTabWidget?
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
alexman
Гость
« Ответ #2 : Октябрь 12, 2011, 14:28 »

А в исходниках креатора не смотрел?
Записан
BRE
Гость
« Ответ #3 : Октябрь 12, 2011, 14:31 »

Такие вещи лучше делать из QListView/QListWidget.
Записан
deaks
Гость
« Ответ #4 : Октябрь 12, 2011, 14:34 »

Просто есть уже готовый и рабочий TabWidget - на вкладках которого размещены таблицы. по поводу ListWidget хорошая идея
Записан
BRE
Гость
« Ответ #5 : Октябрь 12, 2011, 14:37 »

Просто есть уже готовый и рабочий TabWidget - на вкладках которого размещены таблицы. по поводу ListWidget хорошая идея
На самом деле это можно делать и с QTabWidget. Написать своего наследника от QTabBar, в котором все рисовать как надо и установить его в QTabWidget.
Но, imho, все таки лучше использовать QList... + QStackedWidget.
« Последнее редактирование: Октябрь 12, 2011, 14:39 от BRE » Записан
deaks
Гость
« Ответ #6 : Октябрь 12, 2011, 14:56 »

QStackedWidget для отображения отдельных страниц как с табами?
Записан
BRE
Гость
« Ответ #7 : Октябрь 12, 2011, 14:57 »

QStackedWidget для отображения отдельных страниц как с табами?
Да. QTabWidget устроен также, только там QTabBar + QStackedWidget.
Записан
deaks
Гость
« Ответ #8 : Октябрь 12, 2011, 14:59 »

Спасибо! Параллельно попробую все-таки покопаться в исходниках креатора Улыбающийся
Записан
deaks
Гость
« Ответ #9 : Октябрь 12, 2011, 15:43 »

скачал исходники и что-то не пойму где копать)))
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #10 : Октябрь 12, 2011, 16:04 »

Можно и по-проще) Вот рабочий пример:
Код
C++ (Qt)
#include <QApplication>
#include <QStyle>
#include <QToolButton>
#include <QTabWidget>
#include <QTabBar>
 
class TabWidget : public QTabWidget
{
public:
QTabBar* tabBar() { return QTabWidget::tabBar(); }
};
 
#define Count(arr) ((unsigned int) (sizeof(arr) / sizeof(arr[0])))
 
int main( int argc, char** argv )
{
QApplication app( argc, argv );
TabWidget tw;
QWidget w;
 
QStyle::StandardPixmap tab_icons[] = {
QStyle::SP_MediaSkipBackward,
QStyle::SP_MediaPlay,
QStyle::SP_MediaStop,
QStyle::SP_MediaSkipForward
};
QString tab_names[] = {
"Rewind",
"Play",
"Stop",
"Fast Forward"
};
 
tw.setTabPosition( QTabWidget::West );
 
for( int i = 0; i < Count( tab_icons ); i++ )
{
tw.addTab( new QWidget(), QString() );
 
QToolButton* tb = new QToolButton;
tb->setStyleSheet( "background-color: none; border: 0px;" );
tb->setAttribute( Qt::WA_TransparentForMouseEvents );
tb->setIcon( app.style()->standardIcon( tab_icons[i] ) );
tb->setText( tab_names[i] );
tb->setToolButtonStyle( Qt::ToolButtonTextUnderIcon );
 
tw.tabBar()->setTabButton( i, QTabBar::LeftSide, tb );
}
 
tw.show();
 
return app.exec();
}
 
Записан

Qt 5.11/4.8.7 (X11/Win)
deaks
Гость
« Ответ #11 : Октябрь 12, 2011, 16:13 »

GreatSnake!, это чертовски здорово)))большое спасибо

а поводу исходников креатора не подскажете?) все же интересно как у них
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #12 : Октябрь 12, 2011, 17:07 »

GreatSnake!, это чертовски здорово)))большое спасибо

а поводу исходников креатора не подскажете?) все же интересно как у них
См. FancyTabWidget в src/plugins/coreplugin.
Записан

Qt 5.11/4.8.7 (X11/Win)
deaks
Гость
« Ответ #13 : Октябрь 13, 2011, 10:56 »

См. FancyTabWidget в src/plugins/coreplugin.

респект  Подмигивающий
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.114 секунд. Запросов: 23.