создать полосу прокрутки в подменю qt?

У меня есть приложение карты и подменю, в которое добавлены динамически добавляемые объекты (т.е. точки на карте), в зависимости от загруженного слоя. У меня есть возможность скрыть каждый отдельный объект (т.е. точку), щелкнув соответствующий пункт подменю. Есть ли способ организовать подменю? Когда точек много (т.е. 100) все подменю занимает экран. Могу ли я добавить полосу прокрутки в подменю? Я просмотрел документацию, но не смог найти ничего, что поддерживало бы эту функцию.


person jim    schedule 19.08.2011    source источник


Ответы (4)


Из этого отчета об ошибке я узнал, что вы можете сделать следующее:

submenu->setStyleSheet("QMenu { menu-scrollable: 1; }");

Работает как шарм.

person user2045149    schedule 06.02.2013

Насколько мне известно, такой возможности нет. Возможно, вам не следует использовать для этого подменю, но вы предпочитаете пункт меню, который показывает ваш собственный графический интерфейс менеджера точек, в котором QListWidget отображает все ваши элементы точек. Я знаю, что это решение сломает (большую?) часть вашего кода, но я не вижу ничего другого.

person Jeannot    schedule 19.08.2011
comment
Так что в основном создать всплывающее окно вместо подменю для управления всеми объектами? - person jim; 19.08.2011

Хотя можно создать подкласс класса QMenu для создания пользовательского виджета и перейти оттуда, вам лучше поискать лучший способ отображения этой информации. Вы сэкономите свое время, и вашим пользователям будет намного проще прокручивать большой список элементов в небольшой области.

person Nicholas Smith    schedule 19.08.2011

Я думаю, вы сможете получить желаемый эффект, создав и используя свой собственный подкласс QStyle (через QApplication::setStyle()) и переопределив виртуальный метод styleHint так, чтобы он возвращал 1, когда переданный параметр StyleHint равен SH_Menu_Scrollable. По крайней мере, это работает для меня, когда я создаю большие объекты QMenu и показываю их как всплывающие меню.... Это также может работать для QMenus, прикрепленного к строке меню, но я этого не пробовал.

person Jeremy Friesner    schedule 20.08.2011