Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: fly от Июля 18, 2010, 12:50



Название: QScrollBar крупнее
Отправлено: fly от Июля 18, 2010, 12:50
Здравствуйте!
Имеется ScrollArea, хочу сделать её ScrollBarы крупнее, чтоб на тачскрине попасть можно было.
Попытался внаглую растянуть ui.thumbnailsScrollArea->verticalScrollBar()->setMinimumWidth(100) - не прокатило.


Название: Re: QScrollBar крупнее
Отправлено: xokc от Июля 18, 2010, 17:57
style sheet?


Название: Re: QScrollBar крупнее
Отправлено: Prm от Июля 19, 2010, 15:00
Для тачскрина делал так.

Вариант1(предпочтительный): Создал класс-наследник от QPlastiqueStyle и переопределил функцию

Код:
int GUIStyle::pixelMetric( PixelMetric metric, const QStyleOption * option, const QWidget * widget) const
{
    switch(metric)
    {
        case QStyle::PM_ScrollBarExtent:            return 40;
        case QStyle::PM_SplitterWidth:              return 20;
        case QStyle::PM_IndicatorWidth:             return 25;      //checkBox
        case QStyle::PM_IndicatorHeight:            return 25;      //checkBox
        case QStyle::PM_ExclusiveIndicatorWidth:    return 25;      //radioButton
        case QStyle::PM_ExclusiveIndicatorHeight:   return 25;      //radioButton
        case QStyle::PM_ButtonIconSize:             return 32;
        case QStyle::PM_ButtonMargin:               return 30;
        case QStyle::PM_MenuBarVMargin:             return 15;
        default:                                    return QPlastiqueStyle::pixelMetric(metric,option,widget);
    }
}

Далее устанавливал стиль приложению
Код:
qApp->setStyle(new GUIStyle); 

Можно и другие методы переопределить - вообще красота будет!

Вариант 2: У приложения вызвать функцию
Код:
app.setGlobalStrut(QSize(40, 40));



Название: Re: QScrollBar крупнее
Отправлено: mal от Октября 10, 2012, 11:40
искали сейчас решение с коллегой по этому вопросу тут на форуме - как то некузяво все, в итоге сделали вот так:

QSize QScrollBar::sizeHint() const
{
   Qt::Orientation ori = orientation();
   if( ori == Qt::Vertical ) return QSize( 35, 15 );
   return QSize( 15, 15 );
}

Вуаля  :D