• 6785阅读
  • 9回复

请教信号槽的参数匹配问题,谢谢大家了 [复制链接]

上一主题 下一主题
离线walkley
 
只看楼主 正序阅读 楼主  发表于: 2010-01-06
用QT编写一个按钮界面,点击按钮后弹出提示对话框
connect( button, SIGNAL(clicked()), this, SLOT(DialogMessage()));

DialogMessage()是我自己定义的一个槽函数
现在的问题是:
我想在槽函数中加入一个参数,输入字符串,以便点击不同的按钮时显示不同的内容
可是信号与槽函数的参数需要匹配
我尝试在clicked函数中增加参数,失败
可是槽函数不带参数如何才能做到显示不同的内容呢?

弄了一天了,头大,请大家帮帮忙啊,谢谢啦


离线yangfanxing
只看该作者 9楼 发表于: 2010-01-07
引用第5楼walkley于2010-01-06 17:37发表的  :
谢谢你,不过我没看懂你的意思


  1. QObject*  sender = sender();
  2. if(sender->inherits("QPushButton"))
  3. {
  4.   QMessageBox::information(0,"test", ((QPushButton*)sender)->text()));
  5. }

这个是说:
1、将各个button的click()都映射到同一个槽函数上;
2、QObject*  sender = sender();判断信号发送者;
3、((QPushButton*)sender)->text()));获得发送者的文本(亦即发送Click()信号的button)
PHPWind好恶心。。。不想看这种界面。。。
离线ziteng
只看该作者 8楼 发表于: 2010-01-07
引用第4楼walkley于2010-01-06 17:36发表的  :
触发信号可以做到,可是还是无法带入参数啊,每个按钮显示不同的提示
最最傻的方法是针对每个按钮去定义一个槽函数


自己写的信号自己可以定义啊,带上参数就行了。
离线walkley
只看该作者 7楼 发表于: 2010-01-07
引用第6楼hackself于2010-01-06 17:55发表的  :
汗,我还以为你是要点不同的,显示相应的按纽上的文本呢..
不过道理是一样的...
你可以:
.......



非常感谢你
离线hackself
只看该作者 6楼 发表于: 2010-01-06
汗,我还以为你是要点不同的,显示相应的按纽上的文本呢..

不过道理是一样的...

你可以:
......        //判断是不是QPushButton,如果是做下面
QPushButton*  sender= (QPushButton*)(this->sender());
if(sender == btn_1)
{
    .......
}
else if(sender == btn_2)
{
  ....
}
........
离线walkley
只看该作者 5楼 发表于: 2010-01-06
引用第3楼hackself于2010-01-06 17:15发表的  :
QObject*  sender = sender();
if(sender->inherits("QPushButton"))
{
  QMessageBox::information(0,"test", ((QPushButton*)sender)->text()));
}


谢谢你,不过我没看懂你的意思
离线walkley
只看该作者 4楼 发表于: 2010-01-06
引用第2楼xtfllbl于2010-01-06 17:15发表的  :
你要是不想继承也可以,clicked()触发槽函数,在此槽函数中emit你自己定义的信号就可以了
不要忘记connect


触发信号可以做到,可是还是无法带入参数啊,每个按钮显示不同的提示
最最傻的方法是针对每个按钮去定义一个槽函数
离线hackself
只看该作者 3楼 发表于: 2010-01-06
QObject*  sender = sender();
if(sender->inherits("QPushButton"))
{
  QMessageBox::information(0,"test", ((QPushButton*)sender)->text()));
}
离线xtfllbl

只看该作者 2楼 发表于: 2010-01-06
你要是不想继承也可以,clicked()触发槽函数,在此槽函数中emit你自己定义的信号就可以了

不要忘记connect
上海欢迎您
离线午小夜

只看该作者 1楼 发表于: 2010-01-06
自己繼承一個Button類,重新寫個信號。
[操作系统版本]  Windows XP;Linux Ubuntu;Linux Fedora;
[Qt SDK版本]    4.7.0
[SDK 发布日期]  2010.05
[IDE(集成开发环境)] QtCreator
个人网页:http://hi.baidu.com/午小夜
學歷:Royal Jalidon
快速回复
限100 字节
 
上一个 下一个