首页| 论坛| 消息

标题:【提问】一个带参数的槽的问题!
作者:eryue
日期:2005-09-09 16:46
内容:

1、声明:
protected slots:
virtual void Message( int flag );
2、定义:
void MyDialog::Message( int flag )
{
if( flag == 1 )
{
QMessageBox::information( this,
"Curve plot for ASCII data",
"

This tool provide you the ability to display multi-curves

",
"Ok",
0 );
}
else if( flag == 2 )
{
QMessageBox::warning( this,
"Curve plot for ASCII data",
"There is No file be selected !!!",
"Ok",
0 );
}
}
3、连接:
connect( buttonHelp, SIGNAL( clicked() ), this, SLOT( Message( 1 ) ) );
4、编译成功,运行报错:
$ QObject::connect: No such slot MyDialog::Message(1)
QObject::connect:(sender name: 'buttonHelp')
QObject::connect:(receiver name: 'MyDialog')
其中:
QPushButton* buttonHelp;
QPushButton* buttonOk;
QPushButton* buttonCancel;
—————————————————————————————————————————————
小豆子(8349695) 16:21:52
信号的参数个数不能少于槽的参数 个数
connect( buttonHelp, SIGNAL( clicked() ), this, SLOT( Message( 1 ) ) );
无参数 一个参数
所以会出错!
碧空烈日(37906974 ..


#1 [girl2008 09-10 13:56]
建议你去看一下信号和槽的文章:http://www-128.ibm.com/developerworks/cn/linux/guitoolkit/qt/signal-slot/,
在文章中有这么一句话,
"信号和槽函数的声明一般位于头文件中,同时在类声明的开始位置必须加上Q_OBJECT语句,这条语句是不可缺少的,它将告诉编译器在编译之前必须先应用moc工具进行扩展。"
看一下里面的例子就会明白的
#2 [codez 09-11 14:24]
搂主完全错误领会了 signal & slot 的意义。
另外,你的使用方式不具备典型意义。

回复 发表
主题 版块