我没有一个具体的例子来展示......但我要做的是从一个基于C的文件,从TCP Socket写入文本到QTextEdit框(只读)。
我正在编写一个小TCP客户端,它从我在C for Linux中编写的TCP服务器读取传入数据。现在我正在尝试编写基于QT GUI的客户端,以便用户可以从服务器发送/接收文本。基本上它是一个聊天服务器。
我不确定如何直接从c文件专门写入QTextEdit控件。我的套接字代码是严格基于C的,我可以让QT触发打开套接字等的功能。现在,我试图弄清楚如何读取服务器响应的任何内容。
虽然有传入数据,但如何将该缓冲区传回QT框架并进入QTextEdit控件?我正在使用C函数recv()。
答案 0 :(得分:0)
QTextEdit具有setPlainText API,允许修改它显示的文本。一些如何通过公开QTextEdit对象或在QTextEdit上调用setPlainText API的函数来从您的代码中访问此API。
答案 1 :(得分:0)
我认为你可以在另一个文件中编写一个c ++类,并将其包含在你的c文件中。 那个课程必须是这样的:
class MySignalClass : public QObject
{
Q_OBJECT
public:
void send_message(char *x)
{
emit message_to_write(x);
}
signals:
void message_to_write(char * x);
};
MySignalClass obj;
您还需要在QEditBox所在的类中创建一个插槽。之后,如果您将此信号连接到该插槽。您创建的插槽将使用您随信号发送的内容修改QEditBox的内容。
要发送信号,您需要做的就是在调用recv()后插入此行
obj.send_message(缓冲液); //缓冲区是你用recv()获得的。
我不确定这是否足够,你可以看一下Qt信号和插槽机制here
这更像是一个c ++解决方案,我不知道如何在没有课程的情况下发送Qt信号。