Qt5: QTextEdit to (LPVOID lpBuffer, DWORD dwBytesToWrite)

Posted

技术标签:

【中文标题】Qt5: QTextEdit to (LPVOID lpBuffer, DWORD dwBytesToWrite)【英文标题】: 【发布时间】:2018-02-12 16:49:09 【问题描述】:

我有一个带有 textDataToSend QTextEdit 字段的 GUI,我想使用在接受 (LPVOID lpBuffer, DWORD dwBytesToWrite) 参数的 fWrite 函数中输入的数据。

现在我使用:

dataToSend[0] = ui->textDataToSend->toPlainText().toUInt(&bStatus,16);
sendData(dataToSend,1);

sendData 是这样的:

DWORD sendData(char* txBuffer, unsigned long txBufferSize) 
    int status;
    status = fWrite(handle, txBuffer, txBufferSize);
    return status;

这样我就可以发送一个字节了。

我想使用的数据是可变长度的十六进制字符串(如“aa0011”、“1122334455”、...)。我完全没有经验,您能否建议一些好的、正确、更聪明的方法来做到这一点?

【问题讨论】:

【参考方案1】:

首先从文本编辑中获取QString

QString textEditString = ui->textDataToSend->toPlainText();

当你手中有QString时,你可以同时得到“缓冲区”和“缓冲区大小”,如下图所示。

//First get the byte array from the string
QByteArray bArray = textEditString.toLatin1();

//Get the size of the string in bytes
int length = bArray.size(); 

//Get the string buffer
char *tBuffer = bArray.data();

现在将这些值传递给您的发送数据

sendData(tBuffer, length);

LPVOID 只是一个 Void 指针。 fWrite 应该可以毫无问题地使用tBuffer

【讨论】:

以上是关于Qt5: QTextEdit to (LPVOID lpBuffer, DWORD dwBytesToWrite)的主要内容,如果未能解决你的问题,请参考以下文章

Qt 5.8 QTextEdit 文本光标颜色不会改变

android 上 QTextEdit 的选择

如何在不使用当前段落样式的情况下附加到 QTextEdit

《Qt5 开发与实例(第三版)》学习笔记

《Qt5 开发与实例(第三版)》学习笔记

LPVOID 没有类型的指针