首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

Qt信号传递有关问题

2014-01-01 
Qt信号传递问题如图,点击“预览”按钮,给箭头所指的控件发信号show_preivew。按钮是在RegexpReplace 的Widget

Qt信号传递问题
Qt信号传递有关问题
如图,点击“预览”按钮,给箭头所指的控件发信号show_preivew。
按钮是在RegexpReplace 的Widget中,箭头所指的控件在主程序窗口中。

我在RegexpReplace类中按钮的clicked()的槽函数里面发射信号 emit show_preivew(),在主窗口中调用槽函数接收

connect(m_pRegDlg, SIGNAL(show_preivew()), this, SLOT(on_preivew()))

返回值总是false

但是如果我在RegexpReplace类中将按钮的clicked()信号与show_preivew()信号连接起来
connect(ui.pushButton, SIGNAL(clicked()), this, SIGNAL(show_preivew()));

这样在主程序中connect就是OK的,槽函数on_preview也可以响应,请问下这是为什么?第一种做法connect为什么会失败呢? qt?connect?信号?槽 qt ?connect ?信号 槽
[解决办法]
本帖最后由 dext 于 2013-10-30 22:43:37 编辑 我使用了 类似于楼主的方法,两种方法均能触发正确的信号,也会响应相应的槽
但是有两点需要说明,我直接使用了一个 Dialog 嵌套了 一个 Widget。然后 把这个Widget 特化 成了 我的 Widget。这个步骤 全都是用鼠标完成的。

我真正写的 就是三行代码:
在 自己的Widget构造函数 最后一行
connect(ui->pushButton_2, SIGNAL(clicked()), this, SIGNAL(show_preivew()));


响应pushputton的click
void Form::on_pushButton_clicked() {
    emit show_preivew();
}


和 在 Dialog的 构造函数 最后一行 
connect(ui->widget, SIGNAL(show_preivew()), this, SLOT(onRegExPreview()));



还有 一点 在你的程序里,可能会有编译器提示 因为 槽 on_regex_preivew() 符合 connectSlotsByName 规则。
所以在我的例子里 我使用了 onRegExPreview 的名字。

一切正常。

可能是你的代码其他地方有问题吧。
[解决办法]
connect语句的执行必须在RegexpReplace实例化之后

热点排行