2012-03-16 118 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沒有班級的信號。