从C函数将文本写入QTextEdit框

时间:2012-03-16 01:48:47

标签: qt sockets tcp client qtextedit

我没有一个具体的例子来展示......但我要做的是从一个基于C的文件,从TCP Socket写入文本到QTextEdit框(只读)。

我正在编写一个小TCP客户端,它从我在C for Linux中编写的TCP服务器读取传入数据。现在我正在尝试编写基于QT GUI的客户端,以便用户可以从服务器发送/接收文本。基本上它是一个聊天服务器。

我不确定如何直接从c文件专门写入QTextEdit控件。我的套接字代码是严格基于C的,我可以让QT触发打开套接字等的功能。现在,我试图弄清楚如何读取服务器响应的任何内容。

虽然有传入数据,但如何将该缓冲区传回QT框架并进入QTextEdit控件?我正在使用C函数recv()。

2 个答案:

答案 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信号。