1

我没有要展示的具体示例……但我想做的是从基于 C 的文件中,将文本从 TCP 套接字写入 QTextEdit 框(只读)。

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

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

当有传入数据时,如何将该缓冲区通过 QT 框架传回 QTextEdit 控件?我正在使用 C 函数 recv()。

4

2 回答 2

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 信号和插槽机制的信息

这更像是一个 c++ 解决方案,我不知道如何在没有课程的情况下发送 Qt 信号。

于 2012-03-16T09:14:11.030 回答
0

QTextEdit 有 setPlainText API,允许修改它显示的文本。通过在 QTextEdit 上公开 QTextEdit 对象或调用 setPlainText API 的某些函数,您需要如何从 c 代码访问此 API。

于 2012-03-16T03:47:32.663 回答