Qt启动新窗口
- 1、前言
- 2、新建ui文件
- 3、创建ui界面
- 4、隐藏当前界面
- 5、包含头文件,启动新界面
- 5.1在新的头文件里声明一个网络对象,更改构造函数
- 5.2更改构造函数并赋值
- 5.3启动新窗口
- 6、清空输入框
- 7、发送数据
- 8、.h文件和.cpp文件
- 8.1 widget.h
- 8.2 widget.cpp
- 8.3 clientchat.h
- 8.4 clientchat.cpp
- 9、总结
1、前言
前言:记录自己对于QT启动新窗口的学习,可以给别人参考也方便自己日后回顾 |
2、新建ui文件

3、创建ui界面

4、隐藏当前界面
this->hide();
5、包含头文件,启动新界面
5.1在新的头文件里声明一个网络对象,更改构造函数
public:
explicit clientChat(QTcpSocket *s, QWidget *parent = nullptr);~clientChat();
private:Ui::clientChat *ui;QTcpSocket *socket;
5.2更改构造函数并赋值
clientChat::clientChat(QTcpSocket *s, QWidget *parent) :QWidget(parent),ui(new Ui::clientChat)
{ui->setupUi(this);socket = s;
}
5.3启动新窗口
clientChat *c = new clientChat(clientSocket);
c->show();
6、清空输入框
void clientChat::on_clearPushButton_clicked()
{ui->clientSendTextEdit->clear();
}
7、发送数据
void clientChat::on_sendPushButton_clicked()
{QString message = ui->clientSendTextEdit->toPlainText().trimmed(); QByteArray data = message.toUtf8(); socket->write(data);
}
8、.h文件和.cpp文件
8.1 widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QTcpSocket>
#include <QMessageBox>
#include <QHostAddress>
#include <QDebug>
#include <clientchat.h>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_canclePushButton_clicked(); void on_connectPushButton_clicked(); private:Ui::Widget *ui;QTcpSocket *clientSocket;
};
#endif
8.2 widget.cpp
#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);clientSocket = new QTcpSocket(this); connect(clientSocket,&QTcpSocket::connected,this, [=](){QMessageBox::information(this,"连接提示","连接服务器成功");this->hide(); clientChat *c = new clientChat(clientSocket); c->show(); });connect(clientSocket,&QTcpSocket::disconnected,this, [=](){QMessageBox::information(this,"连接提示","连接服务器失败");});
}Widget::~Widget()
{delete ui;
}
void Widget::on_canclePushButton_clicked()
{this->close();
}
void Widget::on_connectPushButton_clicked()
{QString ip = ui->ipLineEdit->text(); QString port = ui->portLineEdit->text(); qDebug() << ip;qDebug() << port;clientSocket->connectToHost(QHostAddress(ip), port.toShort());
}
8.3 clientchat.h
#ifndef CLIENTCHAT_H
#define CLIENTCHAT_H#include <QWidget>
#include <QTcpSocket>namespace Ui {
class clientChat;
}class clientChat : public QWidget
{Q_OBJECTpublic:explicit clientChat(QTcpSocket *s, QWidget *parent = nullptr);~clientChat();private slots:void on_clearPushButton_clicked(); void on_sendPushButton_clicked(); private:Ui::clientChat *ui;QTcpSocket *socket;
};#endif
8.4 clientchat.cpp
#include "clientchat.h"
#include "ui_clientchat.h"clientChat::clientChat(QTcpSocket *s, QWidget *parent) :QWidget(parent),ui(new Ui::clientChat)
{ui->setupUi(this);socket = s;
}clientChat::~clientChat()
{delete ui;
}
void clientChat::on_clearPushButton_clicked()
{ui->clientSendTextEdit->clear();
}
void clientChat::on_sendPushButton_clicked()
{QString message = ui->clientSendTextEdit->toPlainText().trimmed(); QByteArray data = message.toUtf8(); socket->write(data);
}
9、总结
以上就是实现QT启动新窗口的整个过程了,浏览过程中,如若发现错误,欢迎大家指
正,有问题的可以评论区留言或者私信。 最后,如果大家觉得有所帮助的话,可以点个
赞,谢谢大家!梦虽遥,追则能达;愿虽艰,持则可圆! |
QT启动新窗口完成!