天嵌 ARM开发社区

 找回密码
 注册
查看: 1664|回复: 3

QT4中有个语句不明白,请教下。

[复制链接]
zhanglei229178 发表于 2010-11-22 15:45:15 | 显示全部楼层 |阅读模式
void Calculator::digitClicked()
{
    Button *clickedButton = qobject_cast<Button *>(sender());
    int digitValue = clickedButton->text().toInt();
    if (display->text() == "0" && digitValue == 0.0)
        return;

    if (waitingForOperand) {
        display->clear();
        waitingForOperand = false;
    }
    display->setText(display->text() + QString::number(digitValue));
}

这个函数的这句不是很明白:Button *clickedButton = qobject_cast<Button *>(sender());
又是<符号,又是*>符号,很混乱看不懂啊!!
天嵌_support1 发表于 2010-11-22 16:41:43 | 显示全部楼层
1# zhanglei229178


Button *clickedButton = qobject_cast<Button *>(sender());
又是<符号,又是*>符号,很混乱看不懂啊!!

从含义上将这是对象的转换了。你可能想太多。  这里 <Button *> 中间是没有 "," 的<Button ,*>;
它不是模板的意思啦,“<符号,又是*>”,你自己加了逗号......
 楼主| zhanglei229178 发表于 2010-11-22 21:32:19 | 显示全部楼层
谢谢管理员,这里的售后服务可以是做的最好的了!!

可是就算没有逗号我还是不明白这条语句,是c++的基础太差了吗? 能先给我讲下这条语句吗?
  = qobject_cast<Button *>(sender());
天嵌_support1 发表于 2010-11-23 10:35:12 | 显示全部楼层
3# zhanglei229178


这个可能和QT的SLOT,SIGAL空间机制有关吧。
因为Button 可能会发出 click() 这样的信号(SIGNAL), 而如果很多个Button的话,接收方要采取什么样的处理方式(SLOT),这是要通过这个 发送者(sender) 来判断的。
这里Button *clickedButton = qobject_cast<Button *>(sender());我想就是解析发送者。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-9-28 03:26 , Processed in 1.026407 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表