2012-03-16 116 views
1

我没有一个特定的例子来显示...但我要做的是从基于C的文件,将文本从TCP套接字写入到QTextEdit框(这是只读)。从C函数写文本到QTextEdit框

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

我不知道如何直接从c文件中直接写入QTextEdit控件。我的套接字代码严格基于C语言,我可以通过QT来触发打开套接字的函数等。现在,我试图弄清楚如何读取服务器响应的任何内容。

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

回答

0

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

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没有班级的信号。