gpt4 book ai didi

c++ - 私有(private)插槽 Qt 声明不一致

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:52:38 25 4
gpt4 key购买 nike

昨天我在 Qt 中处理一个项目,所以我延迟调用了一个我认为是公开的插槽。所以我写道:

QTimer::singleShot();

调用那个插槽,但最后我看到那个插槽是私有(private)的。

这可能是私有(private)插槽的解决方法:

QTimer::singleShot(0,class,SLOT(class::privateSlot()))

为什么在 Qt 中声明不一致?

最佳答案

@hate-engine 的答案有点扩大

找出并查看带有源名称和前缀 moc_ 的文件(例如 moc_my_class.cpp)。当您在类声明中添加 Q_OBJECT 宏时,此文件由 moc-compiler 生成。此宏将几个方法添加到您的类声明中,moc_my_class.cpp 包含这些方法的定义。

现在看看方法 MyClass::qt_metacall。这个方法可以从其他地方调用,因为它是公共(public)的。另一方面,它可以调用 MyClass 的私有(private)方法,因为它们属于类 MyClass

没有什么神秘的))

关于c++ - 私有(private)插槽 Qt 声明不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13989953/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com