Qt信号与槽的有关问题

Qt信号与槽的问题
我在自定义类里有一个signal信号,为DataUpdate(unsigned int a,long b);
想在对话框类中对textEdit写一个槽函数,将a,b的值显示在文本框中。这里涉及到不同类的对象之间进行信号和槽的连接,我不会做,请高手指教。

------解决方案--------------------
在对话框类中增加一个槽,在创建对话框的类中进行连接。如果可以的话,还可以把DataUpdate信号的参数改成QString的,这样就直接可以连接QTextEdit中的setText槽了。
------解决方案--------------------
在你的代码中,s是一个局部变量,等Dialog的构造函数结束时,s就没有了呀!

所以,具体该怎样连,还得看你的实际需求。我不是很确定你的aa和Dialog之间是否真的存在聚合或组合关系。

我只能顺这你现在的思路来判断,根据s变量的创建时间,我假定aa和Dialog之间是组合关系。即aa的对象包含在Dialog里面,而且与Dialog对象的生存周期一致。

那么你似乎应该这样写你的代码

C/C++ code

Dialog::Dialog(QWidget *parent)
    : QDialog(parent),
      ui(new Ui::Dialog)
{
    ui->setupUi(this);

    // s是Dialog的一个私有成员
    s = new aa;

    connect(s, SIGNAL(DataUpdate(QString &)), ui->textEdit, SLOT(setText(QString &)));
}

------解决方案--------------------
探讨

对,非常感谢,我改过了对话框中的局部变量,自定义的类叫aa
class aa{
...
signals:
void DataUpdate(QString & sl);
void run()
{
...

emit DataUpdate( s);

}
};
但提示我如下错误:C:\t3-build-desktop-Qt_4_7_4_for_Desktop_-……

------解决方案--------------------
看红色的部分,笔误?

探讨

class aa:public QObject{
Q_OBJECT
signals:
void DataUpdate(QString & sl);
void run()
{
...

emit DataUpdate( s);

}
};
谢谢帮忙,我已经照上面改过了,但是出现了一个新的问题,错误提示是C:\t3-build-desktop-Qt_4_7_4……

------解决方案--------------------
删除你的影子构建目录,重新编译。
------解决方案--------------------
就看看《C++ GUI Qt4编程(第二版)》吧,还有一本《C++设计模式——基于Qt4开源跨平台开发框架》