如题,在多个窗口中,我有一个窗口中的1个信号连接另一窗口的多个槽函数时,我要只执行某个槽函数而不执行其他的槽函数有没有什么办法呢?
------最佳解决方案--------------------
实际上用户看到就2个按钮。一个OK_1按钮用来实现add功能,一个OK_2按钮用来实现edit功能,一个cancel,点击A窗口的add,则显示OK_1,隐藏OK_2,点击edit,则显示OK_2,隐藏OK_1。
OK_1和_OK_2同时只能显示一个,而且2个按钮的坐标是一样的
------其他解决方案--------------------
终于看明白了,这里需要这样,有两个按钮add、edit点击两个按钮完成不同的工作。
给两个按钮添加clicked槽,有了两个槽之后,
add槽:{
InputIdalog dlg;
if(dlg.exec == QDialog::Acceped){
exit->appendtext(dlg.text());
}
}
edit槽:{
InputIdalog dlg;
dlg.setText("要修改的text");
if(dlg.exec == QDialog::Acceped){
exit->appendtext(dlg.text());
}
}
其实不用信号和槽。这是一般对话框的用法。
------其他解决方案--------------------
首先,我觉得你没有弄清楚信号槽的具体用法。你说不知道过来的信号是add的还是edit。
你在A中有2个button,一个add按钮,一个edit按钮。那这2个按钮的信号槽是分开的,分别是
connect(add_button, SIGNAL(click()), B, SLOT(slot()));
connect(edit_button, SIGNAL(click()), B, SLOT(slot()));
虽然这2个按钮在点击时发出的信号都是click,但是分别是由2个对象(add_button和edit_button)发送这个信号。就好像有A,B两个人,A会说话,B也会说话,但是这2个人说话我们是区分开来的。
------其他解决方案--------------------
给信号添加参数吧...要不就增加信号的种类了
------其他解决方案--------------------
我想实现当某个条件成立时,执行某个槽函数
------其他解决方案--------------------
貌似你可以直接这么去触发槽函数,条件判断成立的话,直接:
emit slotfun(); //slotfun()是槽函数
emit可以触发信号,也可以触发槽函数的,我隐约记得之前这么用过,楼主试下看可以不.
------其他解决方案--------------------
我是用emit,我是这样的,我点击一个按钮后触发一个槽函数,然后槽函数里emit。 我的意思是,我有A,B窗口,A emit 信号, B 接收信号, B有两个槽(fun1, fun2)函数都与同个信号相连,我要在B中当我想只执行1个槽函数时另一个槽函数不执行
------其他解决方案--------------------
因为我在A窗口中有tablewidget, 我想在B窗口中输入数据然后在A窗口中显示数据,我现在在A窗口中有添加数据和修改数据按钮,当点这些按钮时,在B窗口中输入数据后会发送信号过A,A怎么来判断是添加的数据还是修改的数据而执行对应的槽函数?
------其他解决方案--------------------
B窗口有多个可以输入数据的控件
------其他解决方案--------------------
我增加信号,每个槽对应一个信号的话,因为我是在B中按按钮后emit信号的,这样2个信号都会发送过去,都会执行啊,显示到tablewidget上就会有问题了
------其他解决方案--------------------
加参数吧,设个标志。
------其他解决方案--------------------
刚接触Qt, 如果我加了标志,是否要这样来写?而不是把这些connect放到构造函数里?
void Add_Edit::on_Add_Btn_clicked()
{
b.show();
if(flags == 0)
{
connect(&b,SIGNAL(singal1),this,SLOT(fun1));