Russian Qt Forum

Qt => Вопросы новичков => Тема начата: once_again_abc от Июнь 20, 2012, 07:32



Название: кнопка в произвольном месте на QToolBar
Отправлено: once_again_abc от Июнь 20, 2012, 07:32
как мне разместить мою кнопку в заданной (x,y) позиции на тулбаре? move работает только частично... положение кнопки сбрасывается каждый раз когда по ней кликаешь либо когда меняешь ориентацию тулбара.


Название: Re: кнопка в произвольном месте на QToolBar
Отправлено: once_again_abc от Июнь 20, 2012, 07:57
самым простым вариантом (но не очень хорошим), оказалось перехватывать QEvent::LayoutRequest и восстанавливать желаемые x,y

Код:
bool event ( QEvent * pEvent ) {

    if( pEvent->type() == QEvent::LayoutRequest ) {
        m_pButton->move( x,y );
        return true;
    }

    return QToolBar::event( pEvent );
}

здесь есть недостаток:

при изменении ориентации тулбара (напр. горизонтальная - вертикальная - горизонтальная) кнопка на мгновение появляется в ее "родной" позиции, задаваемой addWidget тулбара. т.е. банальное мерцание после изменения ориентации

как все это решить красиво?


Название: Re: кнопка в произвольном месте на QToolBar
Отправлено: GreatSnake от Июнь 20, 2012, 11:14
Для добавления на тулбар сторонних виджетов нужно использовать QWidgetAction. В него добавляешь свой виджет с лейаутом, на котором уже как хочешь размещаешь свою кнопку.


Название: Re: кнопка в произвольном месте на QToolBar
Отправлено: once_again_abc от Июнь 21, 2012, 03:48
Для добавления на тулбар сторонних виджетов нужно использовать QWidgetAction. В него добавляешь свой виджет с лейаутом, на котором уже как хочешь размещаешь свою кнопку.

большое спасибо!