草庐IT

信号强度

全部标签

c++ - POSIX 计时器信号未在信号处理程序中被阻止

我正在设置一个POSIX定时器以给定的速率调用一个函数。我设置了一个信号处理程序并初始化了定时器,等等……一切正常。然而,根据我读过的所有文档,当我在信号处理程序中时,我不应该从计时器接收到信号(它应该自动被阻止)。为了更进一步,我什至将sigaction的sa_mask设置为阻止所有信号......我仍然多次调用信号处理程序......设置处理程序://establishthesignalhandlersigset_tblockMask;structsigactionsigact;sigfillset(&blockMask);//sigemptyset(&blockMask);sig

c++ - 如果从同一个信号调用两个槽,Qt 可以同时调用它们吗?

如果在两个不同的线程中有两个槽,并且这些槽连接到第三个线程中的信号。两个槽会同时被信号调用还是每次都被同步调用?我问是因为我想发送一些回调数据结构(用QSharedPointer封装)并询问是否需要内部锁定机制。 最佳答案 如果您使用Qt::QueuedConnection将信息传递给线程,则不需要锁定实际的信号/槽调用,因为QueuedConnection机制以线程安全的方式处理此问题。话虽如此,您仍然需要保护您的线程访问的任何共享内存,无论它们是如何调用的。第三个线程发出单个信号以导致调用两个槽这一事实不会改变这一点。

c++ - 发出 textChanged() 信号时获取 QTextEdit 更改

我有一个QTextEdit并将textChanged()插槽连接到一个信号。发出信号时如何找到变化。比如我想在写东西的时候保存光标位置和写的字符。 最佳答案 在发出信号时调用的插槽中,您可以使用QStringstr=textEdit->toplainText();获取文本。您还可以存储以前版本的字符串并进行比较以获取添加的字符及其位置。关于光标位置,您可以使用QTextCurosr类,如本例所示:widget.h文件:#ifndefWIDGET_H#defineWIDGET_H#include#include#include#inc

c++ - Qt的QTcpSocket ReadyRead信号的实现

我想了解Qt对QTcpSocket的ReadyRead信号的实现。它在Windows和Linux上是如何实现的?使用select()、poll()、epoll()、SIGIO或任何其他方式?QTcpSocket如何知道何时发出ReadyRead信号? 最佳答案 由于Qt是开源的,你可以直接查看源代码,自己看看。他们甚至拥有它postedonline.操作系统特定部分(我认为)在qnativesocketengine_unix.cpp中实现在qnativesocketengine_win.cpp.

c++ - Qt Designer - 如何将信号连接到静态函数?

好的,我正在使用QtDesigner构建GUI。我已经设法弄清楚如何制作menuBar并且我已经向栏中添加了一些Action,但现在我需要连接这些Action以使它们做一些事情。具体来说,在我的文件菜单上,我有简单的打开操作。我希望此操作运行调用我的QFileDialog等的函数,但我不知道如何执行此操作。那么,如何将我的actionOpen连接到我的静态函数?我正在使用最新的Qt,5.0.2我在这里有点沮丧。这显然是某人可能需要做的最基本的事情之一,但我无法在网络上的任何地方找到任何真正的解决方案。从缺少Qtwiki到其他人的问题,似乎没有人真正有明确的答案。旧版本的Qt有答案,但在

c++ - QCoreApplication 的 aboutToQuit() 信号在 Qt 5.1.0 中是否仍然受支持?

程序在打开.txt文件时启动。退出后,我希望它关闭.txt文件。以下是代码片段:我的中继服务器:voidMyRelayServer::exitHandler(){qDebug()主要内容:#include#include"myrelayserver.h"#include#includeintmain(intargc,char*argv[]){QCoreApplicationa(argc,argv);MyRelayServerserver(9999);QObject::connect(&a,SIGNAL(aboutToQuit()),&server,SLOT(exitHandler())

c++ - 通过外部信号停止 std::thread 的有效方法是什么?

这是一段无法按设计工作的代码,请向我解释这里出了什么问题(简化代码以使其更具可读性)。shm_serverserver;std::threads{server};//somework...std::cout看起来我为shm_server类的另一个拷贝调用了一个stop方法。因为stop()仅将std::atomic_booldone;(shm_server成员)设置为true但我看到了线程函数(这是shm_server的operator())仍然看到done等于false。std::thread只有移动构造函数?在这种典型情况下,如何正确地向服务器发送信号?classshm_serve

c# - 如何编写用于将 Qt 信号映射到 C# 事件的包装类(通过 C++/CLI)

通过C++/CLI包装器调用C++/Qt类就像在公园散步一样。但我无法将C++/Qt信号映射到C#事件。我尝试结合一些可用的操作方法/答案,但没有得到任何有效结果:HowtomapQtSignaltoEventinManagedC++(C++/CLI)Callingmanagedcodefromunmanagedcodeandvice-versa和其他一些不那么直接相关的...这里的问题是,这些操作方法/答案已经很老了。我目前正在使用Qt5.5(即将推出5.6)和.NET4.6。我试图使一切适应当前的技术水平,但可能失败了。可能是因为树太多,我看不到森林,所以我想求一个工作的例子,用当

c++ - QAbstractProxyModel 不更新 dataChanged() 信号

这是我在源模型中的setData:boolTreeModel::setData(constQModelIndex&index,constQVariant&value,introle){if(!index.isValid()||role!=Qt::EditRole)returnfalse;TreeItem*item=static_cast(index.internalPointer());item->setData(index.column(),value);emitdataChanged(index,index);returntrue;}我将源模型的dataChanged信号连接到代理

c++ - 使用 boost::signals2 处理许多信号/槽的连接/断开

我已经开始使用boost::signals2而不是我的旧信号代码。不过,我在管理多个连接时遇到问题。这是我的问题:我有很多Person类的实例:classPerson{public:voidSetName(stringnew_name){name=new_name;NameChange(name);}stringname;boost::signals2::signalNameChange;};我还有一个人员浏览器,它必须监视所有可用人员的子集以了解变化。由于人们可以从该子集中进出,我必须有一种方法来处理连接对象,并且我创建了一个类(ConnectionList)来处理它:classCo