草庐IT

信号灯

全部标签

c++ - 如何将 QML 信号与 C++ 槽连接?

我对QML中的MessageDialog信号有疑问。在我的MessageDialog中,我有两个用于是和否的按钮。我想用信号连接每个按钮。这是我的qml文件:importQtQuick2.2importQtQuick.Dialogs1.1Item{MessageDialog{signalqmlYesSig(stringmsg)signalqmlNoSig(stringmsg)title:"Senddata?"icon:StandardIcon.Questiontext:"Doyouwanttosaveyourdataontheonlineplatform?"detailedText:"

c++ - 捕捉信号并向用户报告问题的便携方式

如果奇迹般地在我们的程序中发生段错误,我想捕获SIGSEGV并通过单个返回码让用户(可能是GUI客户端)知道发生了严重的问题。同时我想在命令行上显示信息以显示捕获到哪个信号。今天我们的信号处理程序如下所示:voidcatchSignal(intreason){std::cerr我可以听到上面的恐怖尖叫声,正如我从这篇文章中读到的thread从信号处理程序调用不可重入函数是邪恶的。是否有一种便携的方式来处理信号并向用户提供信息?编辑:或者至少在POSIX框架内可移植? 最佳答案 这table列出了POSIX保证异步信号安全的所有函数,

c++ - 锁,内存屏障,信号量之间的区别

本文:http://www.aristeia.com/Papers/DDJ_Jul_Aug_2004_revised.pdf(第12页)似乎在锁和内存屏障之间有所区别我想知道锁、内存屏障和信号量之间有什么区别?(虽然其他问题可能会提到锁和同步对象之间的区别,但我没有发现锁和内存屏障之间的区别) 最佳答案 内存屏障(也称为栅栏)是一种硬件操作,它确保对全局的不同读写顺序可见的商店。在典型的现代处理器上,内存访问是流水线,并且可能出现乱序。内存屏障确保这不会发生。完整的内存屏障将确保所有加载和它之前的存储发生在后面的任何加载或存储之前它

QT入门-UI-信号槽

目录一、QWidget类(重点)二、子组件(掌握)三、样式表(熟悉)一、什么是信号槽?二、信号槽的连接方式2.1自带信号→自带槽2.2自带信号→自定义槽2.3自定义信号三、传参方式3.1成员变量3.2静态局部变量3.3信号槽传参四、对应关系4.1一对多4.2多对一一、QWidget类(重点)QWidget类是Qt中所有可视化组件和窗口的基类,其内部规定了很多成员,这些成员都会继承给其派生类。常用成员,所有属性的Accessfunctions对应的都是封装后的接口,即getter和setter:width:constint宽度height:constint高度宽高无法直接设定,可以通过resiz

c++ - Qt 信号中的 CancelEvent 等价物

我通常习惯使用.net框架,最近有机会使用C++/Qt开发一个项目。在这种情况下,我想实现以下功能:(为简化起见,假设我有一个ListView和一个Textbox/Textedit)如果我选择ListView的一个项目->在textedit中显示相应的文本(完成)如果我编辑文本并单击列表中的另一个项目->显示一个对话框,询问是保存还是取消更改(完成)。textedit从列表中获取一个信号,告诉它所选项目已更改。如果用户按下保存->将其保存回去并刷新列表中的项目,则用户点击的新项目将在列表中被选中(完成)如果用户按下取消->不要选择用户点击的其他项目(这是我的问题所在)基本上我看到了两个

c++ - 发出信号或捕获 'nan',因为它们出现在 C++ 数字代码库的计算中

我们有用C++编写的数字代码。很少但在某些特定输入下,一些计算会产生“nan”值。是否有一种标准或推荐的方法可以在某个数值计算导致生成“nan”时停止并提醒用户?(在Debug模式下)。考虑到矩阵和vector的巨大尺寸,检查每个结果是否等于“nan”似乎是不切实际的。标准数值库如何处理这种情况?你能解释一下吗? 最佳答案 当应用于数值运算时,NaN会被传播。因此,检查最终结果是否为NaN就足够了。至于如何去做——如果为>=C++11构建,则有std::isnan,正如Goz注意到的那样。对于?11.......1xx.......

c++ - 程序收到信号 SIGABRT,中止

我的程序中有一个结构structList{intdata;List*next;};以及向列表尾部添加元素的函数:voidaddL(List*&tail,intdat){if(tail==NULL){tail=newList;tail->data=dat;tail->next=NULL;}else{tail->next=newList;tail=tail->next;tail->data=dat;tail->next=NULL;}}gdb说了这个问题terminatecalledafterthrowinganinstanceof'St9bad_alloc'what():std::bad_

c++ - 如何强制 Windows 向所有应用程序发送 'LOW_MEMORY' 信号?

我正在开发一些“释放RAM”工具,它必须强制Windows向所有应用程序发送'LOW_MEMORY'信号(要求所有应用程序释放它们未使用的数据、SQL服务器和文件缓存会被清除,因此您最终会获得大量额外的可用空间)。在C++中执行此操作的最佳方法是什么?对我来说最“自然”的解决方案是分配大量内存,但它是否“好”且“稳定”方法?也许在WinAPI或其他地方有任何适用于它的c++Windowsnative函数?附注该工具的概念来自(我知道更好的方法是......购买一些RAM,但我现在必须编写这样的工具):https://superuser.com/questions/214526/how-

c++ - C++ 中的信号处理

void(*)(int)类型的参数与__sighnd64_t类型的参数不兼容下面是我的简单代码:#include#include#include#include#include#includetypedefstructmystrcut{inta;char*b;}mystr;voidset_string(char**,constchar*);voidmy_handler(ints){printf("Caughtsignal%d\n",s);exit(1);}intmain(){conststd::stringstr1[]={"hello1","hello2"};charstr2[50];

c++ - 使用互斥操作和原语实现信号量

前段时间面试,被要求实现仅使用互斥操作和原语的信号量(他允许int被认为是原子的)。我在下面提出了解决方案。他不喜欢忙/等待部分--while(count>=size){}--并要求通过使用更原始的方式来实现锁定类型和互斥体。我没有设法提出改进的解决方案。有什么想法可以做到吗?structSemaphore{intsize;atomiccount;mutexupdateMutex;Semaphore(intn):size(n){count.store(0);}voidaquire(){while(1){while(count>=size){}updateMutex.lock();if(