Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: neosapient от Апрель 14, 2010, 12:17



Название: QToolBox - раскрасить tab`ы в разные цвета.
Отправлено: neosapient от Апрель 14, 2010, 12:17
Здраствуйте.

Есть QToolBox из семи вкладок/кнопок.
1) Как раскрасить каждую вкладку (саму tab-кнопку) в отдельный цвет радуги ?
Пробовал использовать таблицу стилей, но там не получается задать индивидуальный цвет для каждой tab-кнопки
(http://img9.imageshost.ru/imgs/100414/f938a3e4cd/0585a.jpg) (http://imageshost.ru/)

2) Можно ли вместо tab-кнопки отображать свою картинку (на каждую tab-кнопку свою отдельную картинку) ? Как это сделать ?




Название: Re: QToolBox - раскрасить tab`ы в разные цвета.
Отправлено: alexman от Апрель 14, 2010, 12:41
Открой Designer и "поиграй" со свойством palette для QToolBox. Ну а далее в коде setPalette...


Название: Re: QToolBox - раскрасить tab`ы в разные цвета.
Отправлено: alexman от Апрель 14, 2010, 13:31
А такое решение не подойдет: при вызове int QToolBox::addItem ( QWidget * widget, const QIcon & iconSet, const QString & text ) устанавливать иконку нужного цвета!


Название: Re: QToolBox - раскрасить tab`ы в разные цвета.
Отправлено: GreatSnake от Апрель 14, 2010, 14:14
Эти кнопки в QToolBox-e порождены от QAbstractButton.
Получаем их

Код
C++ (Qt)
QObjectList l( tool_box_widget->children() );
for( QObjectList::iterator it = l.begin(); it != l.end(); ++it )
   if( QAbstractButton* btn = dynamic_cast<  QAbstractButton* >( *it ) )
     ;
 

и делаем с ними что хотим (наверное).
На самом деле сам не пробовал, но по идее должно прокатить.


Название: Re: QToolBox - раскрасить tab`ы в разные цвета.
Отправлено: neosapient от Апрель 14, 2010, 16:41
Воспользовался предложеной конструкцией

Код:
	QObjectList l( toolBox->children() );
for( QObjectList::iterator it = l.begin(); it != l.end(); ++it ){
if( QAbstractButton* btn = dynamic_cast<  QAbstractButton* >( *it ) ){
qDebug() << btn->text();
btn->setStyleSheet("background-color: yellow; border-radius: 5px; color: red");
}
}

В результате, кнопки желтые, текст красный. Но закругления кнопок нет.

Есть ещё идеи ?


Название: Re: QToolBox - раскрасить tab`ы в разные цвета.
Отправлено: GreatSnake от Апрель 14, 2010, 17:12
Про "закругления" изначально вопрос не стоял :)
Скорее всего border-radius не получится использовать, т.к. поддержка этого property реализована только для публичных потомков QAbstractButton.
Qt Style Sheets Reference::QToolBox: The individual tabs can by styled using the ::tab subcontrol.