草庐IT

c++ - 将信号从 QML 连接到 Qt 5.1

我想使用qt5.1将qml信号连接到qt插槽。我不能在这个版本的qt中使用DeclarativeView。我的qml元素是一个简单的矩形,在onClicked事件上启动信号。Rectangle{id:testwidth:200height:50x:10y:10signalqmlSignal()MouseArea{hoverEnabled:falseanchors.fill:parentonClicked:{console.log("geklickt")test.qmlSignal()}}我有一个带有此header的SignalslotlistView类:classSignalslotl

c++ - 如何监控 Qt Signal 事件队列深度

我的程序中有两个对象。一个物体正在发出信号。另一个在槽中接收信号,并一个接一个地处理传入的信号。这两个对象都在不同的线程中运行。现在我需要测量和监控接收对象的工作量。问题是我不知道在Qt信号队列中有多少信号在等待我的第二个对象处理。有没有办法获得这个队列的大小?或者是否有解决方法来了解仍有多少信号需要处理? 最佳答案 qGlobalPostedEventsCount()是一个起点,尽管它只适用于当前线程。要轮询任意线程,我们可以使用Qt的内部机制。那么实现就非常简单了。即使线程被阻塞并且不处理事件,它也能正常工作。//https:/

c++ - 使用 gdb 处理信号

我正在为Ubuntu10.04调试一个C++应用程序,它有时会收到一个SIGKILL信号。我想捕获信号并阻止它终止执行,只是为了看看我是否能在那个精确时刻获得应用状态的一些有用信息。阅读gdbdocumentation我找到了handle命令,所以我尝试将它应用于SIGKILL信号:(gdb)handleSIGKILLstopnopassSignalStopPrintPasstoprogramDescriptionSIGKILLYesYesNoKilled因此,据我正确理解:stopGDBshouldstopyourprogramwhenthissignalhappens.Thisim

c++ - QML:在 QML 中使用 cpp 信号总是导致 "Cannot assign to non-existent property"

我只是想将一个cpp信号连接到一个qml槽并尝试了不同的方法,但它总是在运行时导致相同的QML错误:无法分配给不存在的属性“onProcessed”!为什么?这是我的Cpp对象:#includeclassImageProcessor:publicQObject{Q_OBJECTpublic:explicitImageProcessor(QObject*parent=0);signals:voidProcessed(constQStringstr);publicslots:voidprocessImage(constQString&image);};ImageProcessor::Ima

c++ - boost::signals2 插槽作为非静态函数成员?

我最近出于学习目的一直在玩弄boost::signals2,我想知道我是否可以将信号连接到位于类(就像我在Qt中所做的那样)。请考虑以下事项:classWorker{typedefboost::signals2::signalSendMessage;public:typedefSendMessage::slot_typeSendMessageSlotType;boost::signals2::connectionconnect(constSendMessageSlotType&slot){returnsend_message.connect(slot);}private:SendMes

c++ - Qt 宏关键字导致名称冲突

我正在为我的Qt项目构建一个NCurses界面。我想使用CDK,但我认为此结构的signals成员与Qtsignals关键字发生冲突。/usr/include/linux/cdk.h:411:error:expectedunqualified-idbefore'protected'如何让CDK与Qt一起工作? 最佳答案 您可以定义QT_NO_KEYWORDS宏,禁用“信号”和“槽”宏。如果你使用QMake:CONFIG+=no_keywords(QtDocumentationhere)如果您使用的是另一个构建系统,请执行任何需要将-

c++ - 不建议通过 Qt Signals 发出大量数据

为什么不建议在Qt中通过信号发送大量数据?为什么我们可以选择通过它们发送我们自己的类型? 最佳答案 WhyitisnotrecommendedtoemitalargeamountofdataoversignalsinQt?没有这样的建议。参见thisquestion供讨论。数据与对象首先,当我们通过信号参数传递数据时,我们传递对象实例-按值或按引用。然而,我们必须区分数据和对象。QString可能包含很多数据,但这并不意味着它会在您复制字符串对象时复制数据。//onemillionworthof'a's,about2megabyte

c++ - Qt Signal/Slots发送完整结构

我正在尝试通过两个线程之间的信号/槽发送一个结构,我的信号/槽已正确连接并且我已经能够发送包含我的部分数据的QString但现在我需要发送整个东西并且结构似乎最明智的。但是,当我尝试时,信号未发送/接收。问题似乎只是发送/接收结构,我尝试了很多方法之前和之后的处理。我不能使用这样的指针here或here因为我的数据生成速度太快,内存被覆盖或释放(我尝试过使用指针并假设引用也会受到类似的影响)。我已经添加了Q_DECLARE_METATYPE到我的结构。我的结构暂时只是一个小测试(后面会放大),在自己的头文件中。#ifndefRETURNSTRUCT_H#defineRETURNSTRU

c++ - Qt Signal Slot Architecture 不需要的无限循环

我对qt信号槽系统有问题。首先,我创建了一个名为SysteminSingleton模式的类,因此我可以在需要的地方访问它的实例。系统有信号SelectionChanged。我有一个列表小部件,我正在将它的itemSelectionChanged信号连接到我的名为onSelectionChanged的​​自定义插槽。在onSelectionChanged插槽中,我发出系统的SelectionChanged信号。目前还没有问题。在我的软件设计中,许多GUI小部件或自定义类可以使用对象的选择,并且系统的SelectionChanged信号可以由列表小部件以外的小部件发出。所以我在列表小部件中

c++ - 如何在命令行界面中处理 ctrl-break 信号

在开始之前,我想澄清一下,这不是一个命令行工具,而是一个通过自己的命令行界面接受命令的应用程序。编辑:我必须为我之前的解释道歉,显然我没有很好地解释它。再来一次……我正在构建一个接受用户命令的命令行界面应用程序。我有一个信号处理程序设置来捕获信号,然后设置一个我需要终止应用程序的标志。我遇到的问题是我能找到的所有控制台功能都被阻塞了,这意味着我无法检测到我需要退出我的控制台处理循环,直到用户按下一个键(或输入,取决于功能).是否有一些标准方法可以进行非阻塞控制台交互,或者是否有一种优雅的方法来构建程序,以便如果我只是从信号线程终止,一切都会被正确处理和释放(请不要不要误解这一点,我知道