Название: Отключение индикатора checked-состояния в QMenu Отправлено: TaIRou от Июнь 30, 2013, 20:41 Доброго времени суток.
Для QAction добавляемых в QMenu, есть возможность делать их chekable, но при этом отображается индикатор, показывающий отмечен ли пункт меню или нет. Так вот нужно, чтобы QActoion сохранило свой функционал в плане выдачи сигнала toggled(bool), но при этом конкретное QMenu, к которому оно добавлено не отображало этот индикатор. (планируется создать QAction, с меняющимся в зависимости от состояния текстом его названия, поэтому индикатор не нужен и даже не логичен) Может решение черезчур извращенское, тогда подскажите более логичное. Пробовал отключать отображение индикатора через styleSheet, но не получилось, потому что за место индикатора, стал отображаться какой-то утопленный прямоугольник. Спасибо заранее. Название: Re: Отключение индикатора checked-состояния в QMenu Отправлено: Bepec от Июнь 30, 2013, 20:46 Через стайлшиты задайте индикатору полную прозрачность (transparent) - вдруг поможет :P
Название: Re: Отключение индикатора checked-состояния в QMenu Отправлено: kambala от Июнь 30, 2013, 20:50 да уж, решение точно в духе «мсье» :)
можно сделать этому экшену подменю с радиокнопками Название: Re: Отключение индикатора checked-состояния в QMenu Отправлено: lit-uriy от Июнь 30, 2013, 21:55 >Может решение черезчур извращенское, тогда подскажите более логичное.
мысль по интерфейсу правильная, где в руководстве макинтошей было более подробное описание этой мысли. >можно сделать этому экшену подменю с радиокнопками зачем? Если задача не показывать "шум" пользователю Название: Re: Отключение индикатора checked-состояния в QMenu Отправлено: TaIRou от Июнь 30, 2013, 22:22 QMenu::indicator {
transparent: 255; } это имелось в виду? такого свойства нету... Название: Re: Отключение индикатора checked-состояния в QMenu Отправлено: Bepec от Июнь 30, 2013, 22:31 Код: color: transparent; Насколько я помню как то так ;) update: позырил - индикатор видимо не совсем то. Приведи, если хочешь моей помощи рисунок. Как сейчас у тебя и как тебе надо. Причем желательно в обоих положениях аля "выделенных"/"невыделенный". Название: Re: Отключение индикатора checked-состояния в QMenu Отправлено: kambala от Июнь 30, 2013, 23:19 Цитировать >Может решение черезчур извращенское, тогда подскажите более логичное. не припоминаю ни одной программы с таким поведением меню, в том числе и в мак ос. вот то, что при нажатии альта одни пункты меню могут заменяться другими — такое есть.мысль по интерфейсу правильная, где в руководстве макинтошей было более подробное описание этой мысли. Цитировать >можно сделать этому экшену подменю с радиокнопками я исхожу из предположения, что действие одного экшена с разными названиями — похожее.зачем? в качестве решения можно в слоте, который вызывается для toggled, отключать соединение, делать setChecked(false) и возвращать соединение. Название: Re: Отключение индикатора checked-состояния в QMenu Отправлено: Bepec от Июль 01, 2013, 06:46 Тут kambala прав. Я тоже такого не видел. Видел замену пунктов меню при щелчке - это да. Там всё просто, скрывается один, показываем другой на том же месте.
Название: Re: Отключение индикатора checked-состояния в QMenu Отправлено: TaIRou от Июль 01, 2013, 14:41 хз, как там на маке, под xp выглядит вот так эта ебулда, в состоянии uncheked:
(http://s1.ipicture.ru/uploads/20130701/Mq33iS7G.png) а в checked-состоянии, прямоугольничка нету. QMenu::indicator { background-color: transparent; } color: transparent; - добавление этой строчки никакого визуального эффекта не принесло (вроде бы) надо то всего в меню добавить строчку старт/стоп, включить/выключить, а тут такая эжопея... Название: Re: Отключение индикатора checked-состояния в QMenu Отправлено: Bepec от Июль 01, 2013, 16:20 Сча я в душ, выйду - посмотрю.
PS Ответ смотри через одно! Название: Re: Отключение индикатора checked-состояния в QMenu Отправлено: kambala от Июль 01, 2013, 16:44 в качестве решения можно в слоте, который вызывается для toggled, отключать соединение, делать setChecked(false) и возвращать соединение. чем не устраивает-то? всё будет работать и выглядеть без всяких артефактов.Название: Re: Отключение индикатора checked-состояния в QMenu Отправлено: Bepec от Июль 01, 2013, 17:03 Код: QMenu::indicator:non-exclusive:checked { Маленькая махинация и использование костылика - полученный результат вас должен удовлетворить. Вкратце - 1) Делаем пустым место под иконку указанием несуществующей картинки. (в результате то окошко вдавленное схлопывается) 2) Далее выделяем в итеме место чтобы наш итем не выделялся (был похож на другие). А то надпись будет начинаться сразу с начала прямоугольника. 3) делаем выделение (Тут уже маленький косяк с определением итема, насколько я понимаю, но уж как мог, так помог). Подобрать нужный цвет выделения проще простого. PS доволен? PPS из-за смены темы оформления/ операционной системы/ установки дополнительных стайлшитов всё может поплыть. Но это неизбежность :P Надо всё протестить вам будет. Название: Re: Отключение индикатора checked-состояния в QMenu Отправлено: Igors от Июль 01, 2013, 17:13 Непонятно что за "цб" тот ф-ционал toggle чтобы прилагать такие усилия для его спасения. Ну просто не включать чеки и ориентироваться по тексту айтема - на худой конец сохранить в переменной.
Название: Re: Отключение индикатора checked-состояния в QMenu Отправлено: TaIRou от Июль 01, 2013, 20:38 в качестве решения можно в слоте, который вызывается для toggled, отключать соединение, делать setChecked(false) и возвращать соединение. чем не устраивает-то? всё будет работать и выглядеть без всяких артефактов.ды, я просто комментировать не стал, как-то не сложилось в моей практике коннекты/дисконнекты творить... Думал что-нибудь прозрачное и ясное найти. Спасибо!) Непонятно что за "цб" тот ф-ционал toggle чтобы прилагать такие усилия для его спасения. Ну просто не включать чеки и ориентироваться по тексту айтема - на худой конец сохранить в переменной. Сейчас так-то и сделано, но я думал, что за лажа такую фигульку-то наверняка можно отключить, пацаны наверняка знают ;) PS доволен? Так-то вроде работает, поломаю, подумаю, осмыслю) |