У меня есть приложение карты и подменю, в которое добавлены динамически добавляемые объекты (т.е. точки на карте), в зависимости от загруженного слоя. У меня есть возможность скрыть каждый отдельный объект (т.е. точку), щелкнув соответствующий пункт подменю. Есть ли способ организовать подменю? Когда точек много (т.е. 100) все подменю занимает экран. Могу ли я добавить полосу прокрутки в подменю? Я просмотрел документацию, но не смог найти ничего, что поддерживало бы эту функцию.
создать полосу прокрутки в подменю qt?
Ответы (4)
Из этого отчета об ошибке я узнал, что вы можете сделать следующее:
submenu->setStyleSheet("QMenu { menu-scrollable: 1; }");
Работает как шарм.
Насколько мне известно, такой возможности нет. Возможно, вам не следует использовать для этого подменю, но вы предпочитаете пункт меню, который показывает ваш собственный графический интерфейс менеджера точек, в котором QListWidget отображает все ваши элементы точек. Я знаю, что это решение сломает (большую?) часть вашего кода, но я не вижу ничего другого.
Хотя можно создать подкласс класса QMenu для создания пользовательского виджета и перейти оттуда, вам лучше поискать лучший способ отображения этой информации. Вы сэкономите свое время, и вашим пользователям будет намного проще прокручивать большой список элементов в небольшой области.
Я думаю, вы сможете получить желаемый эффект, создав и используя свой собственный подкласс QStyle (через QApplication::setStyle()) и переопределив виртуальный метод styleHint так, чтобы он возвращал 1, когда переданный параметр StyleHint равен SH_Menu_Scrollable. По крайней мере, это работает для меня, когда я создаю большие объекты QMenu и показываю их как всплывающие меню.... Это также может работать для QMenus, прикрепленного к строке меню, но я этого не пробовал.