请教Qpushbutton两个功能切换啊,

时间:2022-02-02 23:14:11
代码如下
void QT1::change()
{
     if(flag ==0)
     {
         function1();
         flag =1;
     }
     else(flag == 1)
     {
        function2();
        flag=0;
     }
}
connect(ui->p1,SIGNAL(clicked()),this,SLOT(change()));
我设定的按钮有两种状态,当按钮文字为高级,实现一种功能,当按钮为普通的,实现一种功能,我从上面的方式实现,它总是相互切换,我希望Qpushbutton能够显示间接的切换,如当listwidget中激活Qpushbutton设置为高级的时候,实现一种功能,然后又通过其他部件激活Qpushbutton为普通的时候实现另一种功能,有什么方法使他它们的槽函数相互不干扰,我试着用文字判断,不过不利于国际化,请问有什么好的方法吗,谢谢,


6 个解决方案

#1


槽函数之间的相互干扰??比如呢

#2


不用文字 还可以用状态标志位呀

#3


我用了状态标志位,但是他们之间是相互切换的,比如我按一下按钮“高级”后,立即就切换到按钮“更改”,这样不好,还有我用按钮”高级“clicked发射一个信号,当按钮变成”更改“的时候,我也用clieked,但是按钮”更改“在实现自己的功能的时候,他也继续实现了按钮”高级”的功能,好麻烦

#4


其实你不用写得这么麻烦,QPushButton可以通过setCheckable(true),来实现你上面的功能,而不必再去额外使用标示,你在连接信号的时候使用clicked (bool)就可以了

#5


哦,我试试看,谢谢

#6


实在不行了用两个按钮嘛,一个显示的时候另一个隐藏,一个隐藏的时候另一个显示就可以实现了,优点:不同状态方便管理;缺点:要注意隐藏和显示的时机。

#1


槽函数之间的相互干扰??比如呢

#2


不用文字 还可以用状态标志位呀

#3


我用了状态标志位,但是他们之间是相互切换的,比如我按一下按钮“高级”后,立即就切换到按钮“更改”,这样不好,还有我用按钮”高级“clicked发射一个信号,当按钮变成”更改“的时候,我也用clieked,但是按钮”更改“在实现自己的功能的时候,他也继续实现了按钮”高级”的功能,好麻烦

#4


其实你不用写得这么麻烦,QPushButton可以通过setCheckable(true),来实现你上面的功能,而不必再去额外使用标示,你在连接信号的时候使用clicked (bool)就可以了

#5


哦,我试试看,谢谢

#6


实在不行了用两个按钮嘛,一个显示的时候另一个隐藏,一个隐藏的时候另一个显示就可以实现了,优点:不同状态方便管理;缺点:要注意隐藏和显示的时机。