QMenu 下的 QAction 文字按对齐方式显示

您所在的位置:网站首页 qt设置文字居中 QMenu 下的 QAction 文字按对齐方式显示

QMenu 下的 QAction 文字按对齐方式显示

2024-05-31 17:37| 来源: 网络整理| 查看: 265

 菜单栏( QMenu )下的动作是由QAction来实现。有时需要对QAction的文字显示做一些要求,如文字左对齐显示、文字显示在图标(QIcon)上下左右方位等。 查询了QAction的方法,并没有这样的属性实现,而且QAction本身的图标具有强制性,不设置也占位置(自己测试如此,未发现消除图标所占位置的方法)。而网上很多对QAction文字和图标相关属性设置的方法大多为工具栏( QToolBar )下的QAction,即对QToolBar的风格设置方法:setToolButtonStyle(),并没有对菜单栏( QMenu )。 而其实Qt给提供了实现自定制QAction风格的类,即:QWidgetAction。他有一个指定QWidget的方法:

void setDefaultWidget(QWidget * widget);

这样我们就可以自己绘制想要的效果窗口,然后设置给QAction。相对来说,自由度很高。

下面是我实现的一个例子,仅供参考。

#include #include #include #include QActionWidgetTest::QActionWidgetTest( QWidget *parent ) : QWidget( parent ) { ui.setupUi(this); resize( 600, 400 ); QMenuBar* pMenuBar = new QMenuBar( this ); QMenu* pMenu = new QMenu( "MenuTest" ); pMenu->setFixedWidth( 150 ); QWidgetAction* pActionLeft = new QWidgetAction( pMenu ); QWidgetAction* pActionCenter = new QWidgetAction( pMenu ); QWidgetAction* pActionRight = new QWidgetAction( pMenu ); QLabel* pLabLeft = new QLabel( "AlignLeft" ); QLabel* pLabCenter = new QLabel( "AlignCenter" ); QLabel* pLabRight = new QLabel( "AlignRight" ); pLabLeft->setAlignment( Qt::AlignLeft ); pLabCenter->setAlignment( Qt::AlignCenter ); pLabRight->setAlignment( Qt::AlignRight ); pActionLeft->setDefaultWidget( pLabLeft ); pActionCenter->setDefaultWidget( pLabCenter ); pActionRight->setDefaultWidget( pLabRight ); pMenu->addAction( pActionLeft ); pMenu->addAction( pActionCenter ); pMenu->addAction( pActionRight ); pMenuBar->addMenu( pMenu ); }

效果图如下:

QMenu 下的 QAction 文字按对齐方式显示



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3