草庐IT

QObject::connect: No such slot或者QObject::connect: No such signal

QObject::connect:Nosuchslot或者QObject::connect:Nosuchsignal主要由于两个原因导致的:1.传递参数的时候不能带变量名只能含有变量类型;2.类中必须包含Q_OBJECT。

Opencv报错:QObject::moveToThread: Current thread is not the object‘s thread .(2023.7.4)

使用OpenCv的过程中,因为在环境中安装、卸载别的包导致出错,然后卸载了原本的OpenCv库,用pip重新安装了opencv:pipinstallopencv-pythonpipinstallopencv-contrib-python但是运行出现了如下报错: QObject::moveToThread:Currentthread(0x325e6c0)isnottheobject'sthread(0x35b5230).Cannotmovetotargetthread(0x325e6c0) 在网上查询解决办法,主要有两种方法:1、降级安装OpenCv(没试过);2、pip安装的OpenCV与co

QObject::killTimer: timers cannot be stopped from another thread

QObject::killTimer:timerscannotbestoppedfromanotherthread产生原因定时器的事件处理所处的线程和调用定时器操作(方法)的线程不是同一个线程。可以通过qDebug()QThread::currentThreadId()打印操作时的线程ID。解决思路把定时器的操作(方法:start(),stop())))和事件处理放在同一线程内操作。解决方法使用connect(ui->pushButton,SIGNAL(clicked()),w,SLOT(SlotShow()));而不是直接使用w->SlotShow();。关键代码//mainwindow.c

c++ - QObject在删除时是否区分堆栈和堆分配的 child ?

根据Qt文档:QObjectsorganizethemselvesinobjecttrees.WhenyoucreateaQObjectwithanotherobjectasparent,theobjectwillautomaticallyadditselftotheparent'schildren()list.Theparenttakesownershipoftheobject;i.e.,itwillautomaticallydeleteitschildreninitsdestructor.对我来说,这意味着当一个QObject被删除时,它会遍历并调用delete它存储在其子列表中的

c++ - 当 QObject 被销毁时,Qt 可以安排将 QObject* 设置为 nullptr 吗?

Qt框架有一个signalforallQObjectswhichisemmitedbeforedestruction那个QObject。此事件可用于在它指向的对象被销毁时自动清空一些QObject*变量。但是要做到这一点,您需要使用相对较多的代码。您需要注册一个信号并将其链接到变量。在我看来不是很方便。我可以安排(通过Qt)当QObject被销毁时自动清除指向QObject的指针吗? 最佳答案 没有原始指针,不,但是Qt提供了一个模板化的QPointer完全符合您所描述的类。 关于c++

c++ - 跨线程从 QML 调用 QObject 函数

我正在尝试确定如何从QML调用QObject槽或Q_INVOKABLE方法来为存在于另一个线程中的QObject工作,以及这样做是否安全。假设有一个MainThread和ThreadA。QObjectA存在于ThreadA中。QML引擎/GUI/一切都在MainThread中。我使用将QObjectA暴露给QML引擎declarativeView->setContextProperty("someObj",ObjectA)现在在QML文件中,我调用someObj.someMethod();其中someMethod是一个插槽或者是Q_INVOKABLE。我想知道哪个线程实际执行该函数。如

c++ - 使用具有多重继承的 Qt 信号和槽

我有一个类(MyClass),它从Qt内置对象(QGraphicsTextItem)继承了大部分功能。QGraphicsTextItem间接继承自QObject。MyClass还实现了一个接口(interface),MyInterface。classMyClass:publicQGraphicsTextItem,publicMyInterface我需要能够在MyInterface*上使用connect和disconnect。但是connect和disconnect似乎只适用于QObject*实例。由于Qt不支持从QObject派生类的多重继承,我无法从QObject派生MyInterf

c++ - Qt GUI 应用程序:如果 QObject::connect() 失败会发出警告?

我最近将我的Qt项目从Linux迁移到Vista,现在我正在盲目调试信号。在Linux上,如果QObject::connect()在调试构建中失败,我会在stderr上收到一条警告消息。在Windows上,GUI应用程序没有控制台输出,只有OutputDebugString调用。我已经安装了DebugView,它很好地捕获了我自己的qDebug()输出,但仍然没有关于失败信号的警告。一个可能的解决方案是使用QtCreator的信号自动完成功能,但我喜欢Eclipse,同时使用两者是一个PITA。关于如何在运行时获取信号/槽信息的任何想法?编辑:我刚刚意识到connect()返回bool

c++ - 什么是 qobject_cast?

谁能用尽可能简单的术语(或尽可能简单)解释什么qobject_cast是,它的作用以及为什么我们需要将一种类类型转换为另一种类类型?比如,我在转换int的意义上进行了类型转换作为char或QString也许使用QMessageBox,但为什么要分到不同的类中呢? 最佳答案 在你开始学习之前qobject_cast也就是说,您需要知道C++的dynamic_cast是什么是。动态Actor就是关于polymorphism.C++的动态转换使用RTTI(运行时类型信息)来转换对象。但是qobject_cast在没有RTTI的情况下执行此

c++ - C++与QML之间的通信

这page展示了如何从QML中调用C++函数。我想做的是通过C++函数更改Button上的图像(触发状态更改或完成)。我怎样才能做到这一点?更新我尝试了Radon的方法,但是当我插入这一行时:QObject*test=dynamic_cast(viewer.rootObject());编译器这样提示:error:cannotdynamic_cast'((QMLCppBinder*)this)->QMLCppBinder::viewer.QDeclarativeView::rootObject()'(oftype'structQGraphicsObject*')totype'classQ