草庐IT

组信号

全部标签

c++ - 找到 `destroyed(QObject*)`信号的发送者

我目前在想如何合理使用QObject::destroyed(QObject*)signal.观察我注意到QWidget-派生对象的处理方式略有不同。考虑以下小型独立编译示例:/*sscce.pro:QT+=coreguiwidgetsCONFIG+=c++11TARGET=sscceTEMPLATE=appSOURCES+=main.cpp*/#include#include#include#includeintmain(intargc,char*argv[]){QApplicationapp(argc,argv);QPushButton*button=newQPushButton;Q

c++ - Qt在网络上的信号/槽机制

我希望能够通过网络发送Qt信号。使用Qt的元类型系统序列化信号调用非常简单:使用静态方法::fromSignal创建一个qMetaMethod使用创建的元方法获取方法名称、参数名称、它们的typeIds[1]和值。将所有内容打包成您喜欢的格式(JSON、XML)并发送。但到目前为止,我无法弄清楚如何使用序列化数据调用信号:QMetaObject::invokeMethod(..)将信号/方法名称作为字符串。问题是参数:它们必须作为QGenericArgument提供,并且只能通过使用需要实际类型的Q_ARG宏来创建(不是它的名称的字符串或typeId)和相关值。此外,参数的数量必须在编

c++ - Q_PROPERTY NOTIFY 信号及其参数

我习惯用参数编写我的“propertyChanged”signal,这样接收端就不需要调用Q_PROPERTY的READ功能显式。我这样做是为了清楚起见,并假设在QML数据绑定(bind)情况下,不需要对getter进行“昂贵的”调用来实际获取值,因为它已经作为信号参数传递给QML。我的同事不同意并说这违反了“QML风格”,对此我的回应是文档明确指出它可能有一个参数将采用底层成员的新值:NOTIFYsignalsforMEMBERvariablesmusttakezerooroneparameter,whichmustbeofthesametypeastheproperty.Thepa

c++ - 使用 gdb 处理信号

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

c++ - 如何手动使另一个控件发出信号?

我想知道是否可以通过编码发出一些特定信号。例如,我想发出另一个按钮的点击事件,而无需用户实际单击该按钮。我可以这样做吗? 最佳答案 您可以调用其他按钮的click功能。它将发出点击信号。 关于c++-如何手动使另一个控件发出信号?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3172933/

c# - MFC 和 C# 中的信号量、临界区、互斥量示例

任何人都可以告诉我或给我一个链接,说明关键部分、互斥锁、信号量的详细描述以及如何在MFC和C#中使用它们的一些示例 最佳答案 我可能会解释,但MSDN上的文档已经非常出色了。考虑访问以下链接。这是C#中的Semaphores示例的链接--http://msdn.microsoft.com/en-us/library/system.threading.semaphore.aspx互斥和锁--http://msdn.microsoft.com/en-us/library/aa645740%28v=vs.71%29.aspxCMutexM

c++ - Qt 信号/插槽示例的链接器错误

我有一个包含多个使用信号和槽的类的Qt应用程序,它编译得很好。但是,当我在主CPP(main.cpp)文件中创建自定义类时,出现链接器错误。这是我使用的代码:classCounter:publicQObject{Q_OBJECTpublic:Counter(){m_value=0;}intvalue()const{returnm_value;}publicslots:voidsetValue(intvalue){if(value!=m_value){m_value=value;qDebug()错误如下:Error4errorLNK2001:unresolvedexternalsymbo

c++ - Qt 连接功能 - 使用 lambda 进行信号消歧

这个问题在这里已经有了答案:ConnectingoverloadedsignalsandslotsinQt5(4个答案)关闭6年前。我正在使用c++11连接语法,并通过此连接语句得到以下错误:connect(fileSystemCompleter,&QCompleter::activated,[&](QModelIndexindex){fileSystemPathEdit->setFocus(Qt::PopupFocusReason);});错误:errorC2664:'QMetaObject::ConnectionQObject::connect(constQObject*,cons

c++ - Qt 信号 lambda 导致 shared_ptr 泄漏?

我有以下代码:#include#include#include#includeclassDocument{public:Document(){qDebug("Document");}~Document(){qDebug("~Document");}QUndoStackmUndostack;};classDocumentRepository{public:DocumentRepository(){qDebug("DocumentRepository");}~DocumentRepository(){qDebug("~DocumentRepository");}voidAddDoc(std

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