Название: Какими способами можно вызывать выпадающее меню на кнопке? Отправлено: billy4685 от Апрель 06, 2015, 15:10 Здравствуйте. Задался вопросом: "Какими способами можно вызывать выпадающее меню." То есть чтобы оно появлялось под кнопкой при нажатии на кнопку. Я создавал ранее такое меню двумя следующими способами:
1. Используя setMenu(menu): Код: ............. Код: // в *.h файле Я хотел бы отобразить меню так как в первом способе, ну чтобы на кнопке не рисовался треугольник, по нажатию на который и отображается меню. Конечно же можно использовать второй способ, только вместо exec(but->cursor().pos()) указывать exec(), а меню задать расположение относительно x и y. Но это запаристо каждый раз задавать позицию расположения меню. Может в Qt существует какой-нибудь флаг, который убирает этот треугольник, который появляется при использовании функции setMenu(menu)? Или может как-то еще можно создавать меню появляющее при нажатии на кнопку? Название: Re: Какими способами можно вызывать выпадающее меню на кнопке? Отправлено: Bepec от Апрель 06, 2015, 15:24 Создайте свой класс, наследуемый от кнопки с собственным поведением. Ничего сложного нет.
PS дело десяти минут. Название: Re: Какими способами можно вызывать выпадающее меню на кнопке? Отправлено: billy4685 от Апрель 06, 2015, 15:28 Создайте свой класс, наследуемый от кнопки с собственным поведением. Ничего сложного нет. Спасибо за совет. Я просто думал что может еще как-то можно. Будем тогда создавать свой класс.PS дело десяти минут. Название: Re: Какими способами можно вызывать выпадающее меню на кнопке? Отправлено: Igors от Апрель 06, 2015, 15:49 Конечно же можно использовать второй способ, только вместо exec(but->cursor().pos()) указывать exec(), а меню задать расположение относительно x и y. Но это запаристо каждый раз задавать позицию расположения меню. Что же там такого запаристого?Код Неужели класс надо городить? :) Название: Re: Какими способами можно вызывать выпадающее меню на кнопке? Отправлено: gil9red от Апрель 06, 2015, 15:58 Воспользуйтесь QToolButton с QToolButton::setPopupMode (http://doc.qt.io/qt-4.8/qtoolbutton.html#popupMode-prop)
Название: Re: Какими способами можно вызывать выпадающее меню на кнопке? Отправлено: billy4685 от Апрель 06, 2015, 16:14 Конечно же можно использовать второй способ, только вместо exec(but->cursor().pos()) указывать exec(), а меню задать расположение относительно x и y. Но это запаристо каждый раз задавать позицию расположения меню. Что же там такого запаристого?Код Неужели класс надо городить? :) Название: Re: Какими способами можно вызывать выпадающее меню на кнопке? Отправлено: billy4685 от Апрель 06, 2015, 16:30 Воспользуйтесь QToolButton с QToolButton::setPopupMode (http://doc.qt.io/qt-4.8/qtoolbutton.html#popupMode-prop) Пробовал, там можна в качестве параметра к этой функции передавать QToolButton::DelayedPopup, QToolButton::MenuButtonPopup и QToolButton::InstantPopup. Перепробовал все, но треугольник отображается все равно, только вот при QToolButton::MenuButtonPopup он как отдельная кнопка работает. Название: Re: Какими способами можно вызывать выпадающее меню на кнопке? Отправлено: PimenS от Апрель 06, 2015, 17:41 Я хотел бы отобразить меню так как в первом способе, ну чтобы на кнопке не рисовался треугольник, по нажатию на который и отображается меню. Конечно же можно использовать второй способ, только вместо exec(but->cursor().pos()) указывать exec(), а меню задать расположение относительно x и y. Но это запаристо каждый раз задавать позицию расположения меню. Может в Qt существует какой-нибудь флаг, который убирает этот треугольник, который появляется при использовании функции setMenu(menu)? Или может как-то еще можно создавать меню появляющее при нажатии на кнопку? Как вариант установить setStyleSheet используя QPushButton::menu-indicator. Название: Re: Какими способами можно вызывать выпадающее меню на кнопке? Отправлено: Igors от Апрель 06, 2015, 18:47 Боже, какая ожесточенная борьба за экономию аж одной строки! :) А вдруг она окажется "позорным велосипедом"? Неее, надо искать "искаропки"
Название: Re: Какими способами можно вызывать выпадающее меню на кнопке? Отправлено: billy4685 от Апрель 07, 2015, 14:53 Цитировать Как вариант установить setStyleSheet используя QPushButton::menu-indicator. спасибо, помогло)) правда хотелось бы знать как это же задается не через qss, но и так сойдет пока.Название: Re: Какими способами можно вызывать выпадающее меню на кнопке? Отправлено: billy4685 от Апрель 14, 2015, 09:01 Продолжу данную тему. Заинтерисовал тут один вопрос: "Как разместить меню справа относительно кнопки, если для отображения меню использую but->setMenu(menu)?" Как это сделать через exec() знаю, хочеться сделать это при setMenu(). Может флаг какой-то существует для QMenu?
Название: Re: Какими способами можно вызывать выпадающее меню на кнопке? Отправлено: Bepec от Апрель 14, 2015, 13:51 Не стоит искать гибкости у стандартных решений. Гибкость это exec. Готовый функционал это setMenu.
Не парьтесь. Ибо там надо будет лезть в исходники. |