QMenu下的QAction文字按对齐方式显示-创新互联
菜单栏( 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 );
}
效果图如下:
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
文章标题:QMenu下的QAction文字按对齐方式显示-创新互联
本文路径:http://lswzjz.com/article/dgpgpo.html