自定义类继承QPushButton后无法实现插入按钮菜单

void_main_void 2015-09-18 11:44:43
直接使用QPushButton 可以通过 设置 setMenu 可以设置按钮菜单。

我自己定义个类CPushButton : Public QPushButton 后 定义变量,
CPushButton -> setMenu 无法插入菜单。。

继承QPushButton主要是向设置好看的按钮图片,但是没想到继承后却无法设置按钮菜单了。有解决方法吗。。。。

我尝试过在CPushButton中定义个QPushButton 。用这个QPushButton来设置菜单,并且在mouseReleaseEvent中 emit m_Emun->clicked() 但是并没有什么卵用。。。。
...全文
311 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
iamspoon 2017-02-04
  • 打赏
  • 举报
回复
应该是重写了mousePressEvent。刚遇到这个问题,我把mousePressEvent注释掉就正常了
void_main_void 2015-09-26
  • 打赏
  • 举报
回复
vs下不行。只能普通的QpushButton。。。但是可以自己贴图。 后在设置菜单。不知道是否是因为我自己写了鼠标消息处理的关系不。。。 刚好30分。三个人,散了。
void_main_void 2015-09-26
  • 打赏
  • 举报
回复
引用 2 楼 chenfeng898 的回复:
试了下没问题啊,重载按钮也可以设置menu:
    QMenu *pMenu = new QMenu(this);

    pMenu->addAction("dasdsa");
    pMenu->addAction("dasdsa");
    pMenu->addAction("dasdsa");
    pMenu->addAction("dasdsa");

    ui->pushButton->setMenu(pMenu);



    testbutton* p = new testbutton(this);
    p->setMenu(pMenu);
    p->setText("dasdsadsa");

    ui->verticalLayout->addWidget(p);
vd不行。只能普通的QpushButton。。。但是可以自己贴图。
void_main_void 2015-09-26
  • 打赏
  • 举报
回复
引用 2 楼 chenfeng898 的回复:
试了下没问题啊,重载按钮也可以设置menu:
    QMenu *pMenu = new QMenu(this);

    pMenu->addAction("dasdsa");
    pMenu->addAction("dasdsa");
    pMenu->addAction("dasdsa");
    pMenu->addAction("dasdsa");

    ui->pushButton->setMenu(pMenu);



    testbutton* p = new testbutton(this);
    p->setMenu(pMenu);
    p->setText("dasdsadsa");

    ui->verticalLayout->addWidget(p);
难道VS下就不行吗?。。。。。
GreenArrowMan 2015-09-18
  • 打赏
  • 举报
回复
一般不重写父类的 setMenu,不会改变原来的功能的。
  • 打赏
  • 举报
回复
试了下没问题啊,重载按钮也可以设置menu:
    QMenu *pMenu = new QMenu(this);

    pMenu->addAction("dasdsa");
    pMenu->addAction("dasdsa");
    pMenu->addAction("dasdsa");
    pMenu->addAction("dasdsa");

    ui->pushButton->setMenu(pMenu);



    testbutton* p = new testbutton(this);
    p->setMenu(pMenu);
    p->setText("dasdsadsa");

    ui->verticalLayout->addWidget(p);
冷静忍耐 2015-09-18
  • 打赏
  • 举报
回复
菜单的话,推荐你继承QToolButton,这个是专业的。 然后设置一下setPopupMode和toolButtonStyle就好了

16,211

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧