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