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 = new TcpClient(this);
}
Ex2::~Ex2()
{
delete ui;
}
void Ex2::on_pushButtonTcpConnect_clicked()
{
tcpClientSocket->Test();
}
2. 把ui类改为公共类
//ex2.h
#ifndef EX2_H
#define EX2_H
#include <QDialog>
#include "tcpclient.h"
QT_BEGIN_NAMESPACE
namespace Ui { class Ex2; }
QT_END_NAMESPACE
class Ex2 : public QDialog
{
Q_OBJECT
public:
Ex2(QWidget *parent = nullptr);
~Ex2();
Ui::Ex2 *ui; //改为公共类
TcpClient *tcpClientSocket;
private slots:
void on_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 = new QTcpSocket();
pUi = parent;
}
TcpClient::~TcpClient()
{
delete socket;
}
void TcpClient::Connect()
{
}
void TcpClient::Test()
{
pUi->ui->textEditMy1->setText("Test");
}
//tcpclient.h
#ifndef TCPCLIENT_H
#define TCPCLIENT_H
#include <QTcpSocket>
//#include "ex2.h"
#include "ui_ex2.h"
class Ex2; // 声明类
class TcpClient
{
public:
TcpClient(Ex2 *parent);
~TcpClient();
void Connect();
void Test();
Ex2 *pUi;
private:
QTcpSocket *socket;
};
#endif // TCPCLIENT_H
4. 在pro文件中增加QT += network
//ex2.pro
QT += core gui
QT += serialport
QT += network
# disable C4819 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
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API 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://www.toymoban.com/news/detail-636351.html
文章来源:https://www.toymoban.com/news/detail-636351.html
到了这里,关于Qt 6. 其他类调用Ui中的控件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!