我是靠谱客的博主 魁梧板凳,这篇文章主要介绍菜单项的定制,QWidgetAction的使用——Qt前言代码和效果结束语,现在分享给大家,希望可以做个参考。

前言

有时候需要菜单项显示的不仅是简单的文字,需要显示一个控件或界面,这时候QWidgetAction该上场了。

 

代码和效果

QWidgetAction继承的QAction,有QAction一切功能,在此基础上增加了将自定义的widget插入基于action的容器。我看了QWidgetAction的帮助文档,就几个方法:

public:
QWidget *defaultWidget() const
void releaseWidget(QWidget *widget)
QWidget *requestWidget(QWidget *parent)
void setDefaultWidget(QWidget *widget)

protected:
virtual QWidget *createWidget(QWidget *parent)
QList<QWidget *> createdWidgets() const
virtual void deleteWidget(QWidget *widget)

若是只是在菜单项上显示定制的Widget,那么常用的方法更少:用setDefaultWidget将定制的widget插入到action中,若需要则用defaultWidget获取该widget的指针。

若是将QWidgetAction添加到QToolBar,那么就会调用createWidget()。我们可以重新实现这个函数创建自定义的widget。createdWidgets获取所有的由createWidget创建的widget的容器。

我这里只用实现了最常用的QWidgetAction作为菜单项:按钮点击,显示菜单。MenuWidget 为我自定义的widget。

复制代码
1
2
3
4
5
6
7
8
connect(m_pIconLabel,&QPushButton::clicked,this,&TitleBar::showCustomMenu); m_pMyMenu=new QMenu(this); m_pShowWidgetAction=new QWidgetAction(this); MenuWidget *widget=new MenuWidget(this); widget->setFixedSize(400,350); m_pShowWidgetAction->setDefaultWidget(widget); m_pMyMenu->addAction(m_pShowWidgetAction);

显示菜单和常规的一样的,位置由自己决定

复制代码
1
2
3
4
5
6
7
8
9
void TitleBar::showCustomMenu() { //Q_UNUSED(pos); QWidget *pWindow = this->window(); int x=pWindow->geometry().x()+this->geometry().x(); int y=pWindow->geometry().y()+this->height()+3; QPoint pos(x,y); m_pMyMenu->exec(pos); }

 效果图:

 

结束语

好了,就这么菜单项的定制就这么简单。

最后

以上就是魁梧板凳最近收集整理的关于菜单项的定制,QWidgetAction的使用——Qt前言代码和效果结束语的全部内容,更多相关菜单项内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(69)

评论列表共有 0 条评论

立即
投稿
返回
顶部