使用QTextEdit写了个串口工具, 当串口有数据时通过一个signal传给slot,在 slot中调用QTextEdit的append(text)来增量显示串口数据,当串口关闭时调用clear()来清空显示。
结果发现append调用后显示的数据会有重复。
分析
分析代码,在open串口后,会调用connect,把串口数据传到onSerialData函数中,一个signal会多次调用slots,导致数据重复。
connect(m_serialPort, SIGNAL(readyReadSig(QString)), this, SLOT(onSerialData(QString)));
解决
connect最后添加参数Qt::UniqueConnection确保signal一一对应slots,不会重复调用。
connect(m_serialPort, SIGNAL(readyReadSig(QString)), this, SLOT(onSerialData(QString)), Qt::UniqueConnection);
作者:帅得不敢出门 csdn原创