0


Qt 6. 其他类调用Ui中的控件

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. 效果

在这里插入图片描述

标签: qt ui java

本文转载自: https://blog.csdn.net/lljss1980/article/details/132113288
版权归原作者 lljss2020 所有, 如有侵权,请联系我们删除。

“Qt 6. 其他类调用Ui中的控件”的评论:

还没有评论