• 7455阅读
  • 7回复

与“信号和槽”有关的问题,请大家帮助! [复制链接]

上一主题 下一主题
离线断刀刀客
 
只看楼主 倒序阅读 楼主  发表于: 2008-08-20
— 本帖被 XChinux 执行加亮操作(2008-08-20) —
最近新学QT,试着写代码,碰到信号和槽的问题,请大家帮助!
程序代码:
#include <QObject>
#include <QApplication>

class One:public QObject
{
    Q_OBJECT
public slots:
    void sl();
};
void One::sl()
{
    printf("hello\n");

}
class Two:public QObject
{
   
    Q_OBJECT
signals:
    void sen();
   
};

int main(int argc,char *argv[])
{
    QApplication app(argc,argv);
    One *one = new One;
    Two *two = new Two;
    QObject::connect(two,SIGNAL(sen()),one,SLOT(sl()));
    emit two->sen();
    return app.exec();

}

下面是编译产生的错误信息:
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Trolltech/Qt-4.3.4/mkspecs/linux-g++ -I. -I/usr/local/Trolltech/Qt-4.3.4/include/QtCore -I/usr/local/Trolltech/Qt-4.3.4/include/QtCore -I/usr/local/Trolltech/Qt-4.3.4/include/QtGui -I/usr/local/Trolltech/Qt-4.3.4/include/QtGui -I/usr/local/Trolltech/Qt-4.3.4/include -I. -I. -I. -o test.o test.cpp
test.cpp: In function ‘int main(int, char**)’:
test.cpp:20: error: ‘void Two::sen()’ is protected
test.cpp:30: error: within this context
make: *** [test.o] Error 1


这是什么错误?由什么引起的,请大家指点!在下在线等待!
离线taomic

只看该作者 1楼 发表于: 2008-08-20
test.cpp: In function ‘int main(int, char**)’:
test.cpp:20: error: ‘void Two::sen()’ is protected
test.cpp:30: error: within this context
make: *** [test.o] Error 1

意思是说sen()是私有的,不能和其它类中的槽相联接

class Two:public QObject
{
   
    Q_OBJECT
public signals:    //-----这个位置加了public
    void sen();
   
};
离线taomic

只看该作者 2楼 发表于: 2008-08-20
不好意思,说错了 signal没有public,private,protected关键词
signal应该只能在本类中发射.

即  Two::xxx(){
            emit  sen();
      }

如果是初学,建议先用一下QPushButton ,QLabel等控件练习一下信号和槽.
离线archldx
只看该作者 3楼 发表于: 2009-03-27
怎么解决的啊
离线archldx
只看该作者 4楼 发表于: 2009-03-27
我也想知道是什么回事请
离线tiancaiamao

只看该作者 5楼 发表于: 2009-03-28
建议LZ先看C++...把类看懂了再看Qt
离线bingoking
只看该作者 6楼 发表于: 2009-03-28
signal只需要声明,不需要定义
离线tianykun
只看该作者 7楼 发表于: 2009-03-30
肯定了。信号只需要定义,并且不需要publish之类
槽函数才是需要定义的,当没有连接,就是普通的函数,连接了,才有关联的
快速回复
限100 字节
 
上一个 下一个