qt中的虚函数(疑问)

47 篇文章 2 订阅
1 篇文章 0 订阅
             大家看到我的文章中有写到虚函数,但是我这里想到一点,就是Qt中的虚函数都是定义在protected中的,我们写继承基类的时候将要重新实现的虚函数也是放哎protected部分的,那么我就想,既然这样那么我们的对象就不能访问这些函数啦,那怎么办呢?我猜想是不是这样:因为Qt中的虚成员函数都是事件的,比如void painterEvent(....)。而事件一般都是系统自己需要的时候才调用而不是我们主动去调用它(自己调用也调用不到啊)。请问大家:我这样的理解对嘛?如果正确的话,那qt是如何调用这样的虚成员函数(事件函数)的,通过对象?(我想也不可能,权限不够)、通过类名(我想也不可能,因为虚成员函数也是属于具体对象的)。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在C++虚函数是一种特殊的函数,它允许在派生类重写基类的函数。在Q虚函数是一种常见的技术,用于实现多态性和动态绑定。当一个类的函数被声明为虚函数时,它可以被派生类的同名函数重写,从而实现多态性。\n\在Q虚函数通常用于实现信号和槽机制。信号和槽是Q的一种重要机制,用于在对象之间传递消息。当一个对象发出一个信号时,其他对象可以通过连接到该信号的槽函数来接收该信号。在Q,信号和槽是通过虚函数来实现的。当一个对象发出一个信号时,它实际上是调用了一个虚函数,该虚函数会在所有连接到该信号的槽函数被调用。\n\下面是一个简单的示例,演示了如何在Q使用虚函数实现信号和槽机制:\n\```pp\ss MyObj publi QObj\\ Q_OBJECT\n\publi\ MyObj(QObj *par = nullptr) QObj(par) {}\n\signals\ voi mySig();\n\publi slots\ voi myS() qDebug() << \S \"; }\};\n\i mai(i arg, char *rgv[])\\ QCoreApplicati (arg, argv);\n\ MyObj obj;\ QObj(&bj, &MyObjmySig, &bj, &MyObjmyS);\n\ emi obj.mySig();\n\ retur .ex();\}\```\n\在这个示例,我们定义了一个名为MyObj的类,它继承自QObj类。在MyObj类,我们声明了一个名为mySig的信号和一个名为myS的槽函数。在mai函数,我们创建了一个MyObj对象,并将其mySig信号连接到myS槽函数。当我们发出mySig信号时,myS槽函数会被调用,并输出一条消息。\n\

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值