• 12829阅读
  • 5回复

求助贴:怎么判断按钮是否被点击 [复制链接]

上一主题 下一主题
离线xyfn
 

只看楼主 倒序阅读 楼主  发表于: 2015-01-12
    各位大牛好!本小白弱弱的问你们一下问题
         我自定义了一个按钮,这个按钮实现的是和菜单项一样,点击它就出现一个菜单
    这个菜单是用widget实现的,
    我想实现的是当点击时 弹出,再点击时,菜单栏就消失! 大牛们这是怎么实现的呢?


我的思路是 在mousePressEvent()中判断某个按钮是否被点击,然执行响应语句里的判断 widget是否被打开,如果打开了就关闭,如果关闭了就打开!
但我不知道该如何着手写代码?  大牛们你们知道怎么实现吗?
你们还有啥好建议呢?
           谢谢大家

离线donglaile

只看该作者 1楼 发表于: 2015-01-13
我的方法,如果是继承QPushButton的话,用clicked(bool)信号连接一个自定义的槽函数,根据传入的bool值显示或隐藏widget。
头文件中:
pravite slots:
    void my_btn_fanc(bool clkFlag);

源文件中:
myBtn->setCheckable(true);
connect(myBtn,SIGNAL(clicked(bool)),this,SLOT(my_btn_fanc(bool)));
void Widget::my_btn_fanc(bool clkFlag)
{    
    if(clkFlag){
        hide();
    } else{
        show();
    }
}

离线liudianwu

只看该作者 2楼 发表于: 2015-01-16
定义一个bool值,初始化值为false,当点击了时候改为true,再次单击改为false
欢迎关注微信公众号:Qt实战/Qt入门和进阶(各种开源作品、经验整理、项目实战技巧,专注Qt/C++软件开发,视频监控、物联网、工业控制、嵌入式软件、国产化系统应用软件开发) QQ:517216493  WX:feiyangqingyun  QQ群:751439350
离线xyfn

只看该作者 3楼 发表于: 2015-01-16
回 donglaile 的帖子
donglaile:我的方法,如果是继承QPushButton的话,用clicked(bool)信号连接一个自定义的槽函数,根据传入的bool值显示或隐藏widget。
头文件中:
pravite slots:
    void my_btn_fanc(bool clkFlag);
....... (2015-01-13 09:26) 

还是不能解决
离线xyfn

只看该作者 4楼 发表于: 2015-01-16
回 liudianwu 的帖子
liudianwu:定义一个bool值,初始化值为false,当点击了时候改为true,再次单击改为false (2015-01-16 16:42) 

还是不懂! 具体是怎么实现的?
离线roywillow

只看该作者 5楼 发表于: 2015-01-16
void QPushButton::​setMenu(QMenu * menu)
QPushButton已经给你提供类似的方便了

如果你对样式不满意,可以用qss之类的修改,或者参考
bool QAbstractButton::isCheckable() const
bool QAbstractButton::isChecked() const
void QAbstractButton::toggled(bool checked)  [signal]
当然我想QPushButton因为是继承的QAbstractButton,所以这些东西都有,你需要的只是选择一个适当的层面继承出自己样式的按钮

可以说你无法去判断按钮是否被点击,因为点击就是一瞬间的事情,而是按钮被点击了之后会通过信号告诉你
不过我觉得这不是问题的关键,不应该用这种笨方法
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
快速回复
限100 字节
 
上一个 下一个