LINUX.ORG.RU

qt - кнопка с меню


0

0

Надо сделать кнопку с меню. Но чтобы кнопка как бы была разделена на две части. Нажимая на бОльную часть срабатывает нажатие на кнопку. Нажатие на меньшую часть показывает меню. Есть ли в Qt готовые механизмы или придется писать самому?

Писать придется самому, при этом писать там практически нечего: поставить обработчик на

void QWidget::mousePressEvent ( QMouseEvent * event ) [virtual protected]

, у евента узнать координаты курсора и в случае необходимости открыть контекстное меню.

staseg ★★★★★
()
Ответ на: комментарий от staseg

s/поставить обработчик на/переопределить/

staseg ★★★★★
()

Можно поинтересоваться? а на кой две функции в одной кнопке?

erfea ★★★★★
()
Ответ на: комментарий от g

Зато такой элемент интерфейса очень любят использовать в Ынтерпрайз системах. Возможно, это даже удобно (как юзверь с ними никогда не работал :) )

Slader
()
Ответ на: комментарий от Slader

>Зато такой элемент интерфейса очень любят использовать в Ынтерпрайз системах. Возможно, это даже удобно (как юзверь с ними никогда не работал :) )

да я б не желал с ТАКИМ работать как юзер :D и главное для меня загадка зачем оно надо так?!

erfea ★★★★★
()
Ответ на: комментарий от erfea

> да я б не желал с ТАКИМ работать как юзер :D и главное для меня загадка зачем оно надо так?!
В фаерфоксе похожая система у кнопки "Назад" - сама кнопка и выпадающее меню.

power
()
Ответ на: комментарий от power

Да и в konqueror похоже сделано, я в, прошу прощения, проводнике в, ещё раз извиняюсь, винде такое есть. Только правда не очень понятно, значем оно надо, когда это можно разделить на две кнопки и поставить их рядом. Хотя, может затем, чтобы они одновременно удалялись/добавляляись на тулбар?

devinull ★★
()
Ответ на: комментарий от devinull

посмотрел в трёх браузерах arora, koqueror(кеды 4.3), firefox. Во всех, во всех это отдельный виджет рядом с кнопкой, по крайней мере визульно, просто кнопка подсвечивается когда курсор на виджете списка, в файер фоксе это во всех смыслах отдельный виджет расположенный за кнопками вперёт назад и они не подсвечиваются при взаимодействии со списком. Кстати и исполнение подсветки кнопки при наведение на список проще, нежели разрезание кнопки на половины, не так ли? Просто передаешь в баттон евент (на сколько по фокус ин и аут если не ошибаюсь и ничего не путаю). При таком исполнении не будет возникать путаницы куда кликать.

erfea ★★★★★
()
Ответ на: комментарий от erfea

Не знаю, как в остальных, а в фаерфоксе вообще замечательно сделано: левый клик по кнопке - назад, правый - открывается история.

А сабжевый элемент (кнопко-комбобокс) - по сути своей отвратителен: юзер промахивается мимо малюсенькой зоны для контекстного меню и клацает в кнопку. Кажется в виндах где-то была такая штука, жутко надоедала.

staseg ★★★★★
()
Ответ на: комментарий от staseg

> Кажется в виндах где-то была такая штука

в QiP же

name_no ★★
()

void QAction::setMenu ( QMenu * menu ) ?

Devix
()
Ответ на: комментарий от devinull

>> Только правда не очень понятно, значем оно надо

кнопка с многочисленным выбором и действием по умолчанию. При клике на кнопку выполняется действие по умолчанию, на меню - дополнительные действия из той же оперы. Например, как уже сказали, кнопка Back в браузере функционально может быть сделана именно так. В Opera например так и есть. AFAIR, такие кнопки есть в kdelibs.

alex_custov ★★★★★
()
Ответ на: комментарий от alex_custov

Вчера нашел как это сделать. Добавляешь к QToolButton меню, далее делаешь setPopupMode(QToolButton::MenuButtonPopup) и будет кпонка с меню. Вот только под вистой смотрятся такие кнопки ужасно, поэтому от затеи пришлось отказаться.

facelift
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.