【发布时间】:2014-03-27 03:07:02
【问题描述】:
我在此网站上阅读的其他答案似乎与我的问题无关。无论如何,在我的 mainwindow.cpp 文件中,我有一个需要访问 ui 命名空间的函数:
do
{
intrecv= recv(s1, buffer, 10000,0);
if(intrecv > 0)
{
recvData = buffer;
ui->textEdit->setText("Connection occurred.\n");
}
}while(intrecv > 0);
这是我的预处理器命令:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <thread>
#include <string>
#include <QString>
在我的 mainwindow.h 文件中,我对接收函数进行了原型设计:
class MainWindow : public QMainWindow
{
Q_OBJECT
void receiveFunction();
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private slots:
void on_pushButton_clicked();
void on_lineEdit_returnPressed();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
然后,在 mainwindow.cpp 中,我在另一个函数的线程中调用了该接收函数:
void MainWindow::on_pushButton_clicked()
{
connectFunction();
std::thread t1(receiveFunction);
t1.detach();
}
您可以尝试复制我的问题的一个示例是制作一个按钮和一个 textEdit 字段。让按钮的插槽调用编辑 textEdit 字段的函数。
edit:我忘了提一下:对于我的小例子,不要让它只编辑 textEdit 字段,让它接收数据并编辑 textEdit 字段。
【问题讨论】:
标签: c++ multithreading qt winsock2