Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Antoxa1985 от Октября 01, 2005, 12:25



Название: Qtoolbar
Отправлено: Antoxa1985 от Октября 01, 2005, 12:25
Доброго времени суток!

Возникла следующая проблема: необходимо создать тулбар, который бы имел ширину  равную ширине главного окна, делаю так
Код:

                m_Toolbar = new QToolBar(this);
m_Toolbar->setHorizontalStretchable(true);

m_newAct->addTo(m_Toolbar);
m_openAct->addTo(m_Toolbar);
m_saveAct->addTo(m_Toolbar);
m_Toolbar->addSeparator();
m_cutAct->addTo(m_Toolbar);
m_copyAct->addTo(m_Toolbar);
m_pasteAct->addTo(m_Toolbar);
m_Toolbar->addSeparator();
m_connectAct->addTo(m_Toolbar);

addDockWindow(m_Toolbar,DockTop);

но это дает побочный эффект - пропорционально растягиваются кнопки на тулбаре. Как бы разрулить ситуацию?


Название: Qtoolbar
Отправлено: Racheengel от Октября 01, 2005, 14:17
засунь последним компонентом в тулбар пустой виджет и задай ему политику minimum.


Название: Qtoolbar
Отправлено: Antoxa1985 от Октября 01, 2005, 16:08
как показала практика, решение оказалось достаточно простым
Код:

m_Toolbar->setStretchableWidget(new QWidget(m_Toolbar));

в тулбар вствляется widget, а потом он определяется как основа для растягивания  :)


Название: Qtoolbar
Отправлено: Antoxa1985 от Октября 04, 2005, 05:04
вот еще одна проблемка возникла
при нажатии правой кнопки на toolbar'e или menubar'e вылетает менюшка, как бы ее заменить на свою?


Название: Qtoolbar
Отправлено: nEoN от Октября 04, 2005, 09:04
Можно реализовать наследника тулбара и переопределить метод contextMenuEvent.
Или через фильтр сообщений (installEventFilter, eventFilter) перехватывать QContextMenuEvent, который посылается тулбару и выводить своё меню.


Название: Qtoolbar
Отправлено: Antoxa1985 от Октября 04, 2005, 10:35
nEoN, молодец, спасибо. фильтры рулят