我正在QT申请。我使用QExtSerialPort从我的comp的串行端口接收数据(每当发出readyread()信号时)。我也有一些计时器在一定时间间隔内运行其他东西。现在我注意到,当定时器打开时,并不是所有预读信号的数据都发射得少得多,那么当定时器没有打开时。在QT中是否有办法确保收到串口的所有数据?也许通过为readyread事件设置高优先级或类似的东西?
答案 0 :(得分:4)
信号插槽连接和事件系统之间存在差异。信号发射和插槽触发不是分开的 - 当发出信号时,连接的插槽开始工作。所以他们(信号)不会丢失。
所有事件都是通过应用程序发送的,也是收到的,但可以在以后发生。当控制返回主事件循环时,将处理存储在队列中的所有事件。
如果您自己发布活动,则可以使用
static void QCoreApplication::postEvent ( QObject* receiver, QEvent* event, int priority );
方法。
事件按降序优先级排序,即具有高优先级的事件在具有较低优先级的事件之前排队。优先级可以是任何整数值,即在INT_MAX和INT_MIN之间,包括端点;有关详细信息,请参阅Qt :: EventPriority。具有相同优先级的事件将按照发布的顺序进行处理。