В Qt для пункта контекстного меню, как скрыть пространство значка

Я добавляю контекстное меню, используя QAction для виджета. Теперь рядом с текстом действия есть пробел. Я предполагаю, что это место, где должна была быть ассоциация QIcon с QAction. Теперь, как мне скрыть это пространство. Я пытался сделать:

action->setIcon(QIcon());

но все равно не работает.

Пожалуйста, дайте мне знать, если у вас есть способ удалить этот пробел перед текстом.


person AMM    schedule 16.10.2008    source источник


Ответы (3)


Я не знаю, есть ли способ, специфичный для действия или меню, но вы, вероятно, могли бы удалить его, используя стиль.

person Community    schedule 16.10.2008
comment
Действительно, я просто просмотрел исходники, это единственный простой способ сделать это. Хотя переопределять стили не весело. QWindowsStyle, QWindowsXpStyle, QMacStyle, QGtkStyle, QPlastiqueStyle и т. д. - person mxcl; 21.10.2008

Вы не говорите, какая платформа. Но на Mac вы можете полностью отключить элементы меню с помощью:

qt_mac_set_menubar_icons( false );
person Andy Brice    schedule 20.10.2008

Вы не упомянули версию Qt, которую используете, но QAction версии 4.4.3 позволяет скрыть значок:
http://doc.trolltech.com/4.4/qaction.html#iconVisibleInMenu-prop

Вы также можете попробовать использовать конструктор QAction::QAction ( const QString & text, QObject * parent ):
http://doc.trolltech.com/4.4/qaction.html#QAction-2 (4.4.3)
http://doc.trolltech.com/4.0/qaction.html#QAction-2 (4.0)
http://doc.trolltech.com/3.3/qaction.html#QAction-2 (3.3)

person Chris Roland    schedule 17.10.2008
comment
Это не удалит пробел рядом с меню в стиле Windows. - person mxcl; 21.10.2008