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

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

专业从事企业网站建设和网站设计服务,包括网站建设、申请域名雅安服务器托管、企业邮箱、微信公众号开发、微信支付宝微信小程序定制开发重庆App定制开发、软件开发、等服务。公司始终通过不懈的努力和以更高的目标来要求自己,在不断完善自身管理模式和提高技术研发能力的同时,大力倡导推行新经济品牌战略,促进互联网事业的发展。

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 文字按对齐方式显示


文章题目:QMenu下的QAction文字按对齐方式显示
URL链接:http://bzwzjz.com/article/jcshid.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 高端品牌网站建设 网站建设 成都做网站建设公司 成都网站制作 手机网站建设 成都网站制作公司 成都商城网站建设 成都网站制作 高端网站设计 高端网站设计 成都网站建设 成都网站设计 成都网站设计 成都网站设计 成都网站制作 网站建设公司 手机网站建设套餐 高端网站设计推广 移动网站建设 成都网站建设 企业网站设计 移动手机网站制作