1. 把主类指针this传给其他类,tcpClientSocket = new TcpClient(this);
//ex2.cpp#include"ex2.h"#include"ui_ex2.h"Ex2::Ex2(QWidget *parent):QDialog(parent),ui(new Ui::Ex2){
ui->setupUi(this);
tcpClientSocket =newTcpClient(this);}Ex2::~Ex2(){delete ui;}voidEx2::on_pushButtonTcpConnect_clicked(){
tcpClientSocket->Test();}
2. 把ui类改为公共类
//ex2.h#ifndefEX2_H#defineEX2_H#include<QDialog>#include"tcpclient.h"
QT_BEGIN_NAMESPACE
namespace Ui {classEx2;}
QT_END_NAMESPACE
classEx2:publicQDialog{
Q_OBJECT
public:Ex2(QWidget *parent =nullptr);~Ex2();
Ui::Ex2 *ui;//改为公共类
TcpClient *tcpClientSocket;private slots:voidon_pushButtonTcpConnect_clicked();private://Ui::Ex2 *ui; //私有类
QSerialPort *serial;};#endif// EX2_H
3. 保存主类传来的指针保存,通过该指针调用UI中的控件
//tcpclient.cpp#include"tcpclient.h"#include"ex2.h"TcpClient::TcpClient(Ex2 *parent){
socket =newQTcpSocket();
pUi = parent;}TcpClient::~TcpClient(){delete socket;}voidTcpClient::Connect(){}voidTcpClient::Test(){
pUi->ui->textEditMy1->setText("Test");}
//tcpclient.h#ifndefTCPCLIENT_H#defineTCPCLIENT_H#include<QTcpSocket>//#include "ex2.h"#include"ui_ex2.h"classEx2;// 声明类classTcpClient{public:TcpClient(Ex2 *parent);~TcpClient();voidConnect();voidTest();
Ex2 *pUi;private:
QTcpSocket *socket;};#endif// TCPCLIENT_H
4. 在pro文件中增加QT += network
//ex2.pro
QT += core gui
QT += serialport
QT += network
#disableC4819 warning
QMAKE_CXXFLAGS_WARN_ON +=-wd4819
greaterThan(QT_MAJOR_VERSION,4): QT += widgets
CONFIG += c++11#The following define makes your compiler emit warnings if you use#anyQt feature that has been marked deprecated(the exact warnings#dependon your compiler). Please consult the documentation of the#deprecatedAPI in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS
#You can also make your code fail to compile if it uses deprecated APIs.#In order to do so, uncomment the following line.#You can also select to disable deprecated APIs only up to a certain version of Qt.#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
main.cpp \
ex2.cpp \
tcpclient.cpp
HEADERS += \
ex2.h \
tcpclient.h
FORMS += \
ex2.ui
#Default rules for deployment.
qnx: target.path =/tmp/$${TARGET}/bin
else: unix:!android: target.path =/opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
5. 效果
本文转载自: https://blog.csdn.net/lljss1980/article/details/132113288
版权归原作者 lljss2020 所有, 如有侵权,请联系我们删除。
版权归原作者 lljss2020 所有, 如有侵权,请联系我们删除。