Qt启动新窗口
- 1、前言
- 2、新建ui文件
- 3、创建ui界面
- 4、隐藏当前界面
- 5、包含头文件,启动新界面
- 6、清空输入框
- 7、发送数据
- 8、.h文件和.cpp文件
-
- [8.1 widget.h](#8.1 widget.h)
- [8.2 widget.cpp](#8.2 widget.cpp)
- [8.3 clientchat.h](#8.3 clientchat.h)
- [8.4 clientchat.cpp](#8.4 clientchat.cpp)
- 9、总结
1、前言
|--------------------------------------|
| 前言:记录自己对于QT启动新窗口的学习,可以给别人参考也方便自己日后回顾 |
2、新建ui文件
|-----------------|
| 右键Froms
,添加新文件 |

3、创建ui界面

4、隐藏当前界面
cpp
this->hide(); //把当前界面隐藏掉
5、包含头文件,启动新界面
5.1在新的头文件里声明一个网络对象,更改构造函数
cpp
public:
// 构造函数:初始化一个新的 clientChat 实例,并将其与给定的 QTcpSocket 关联
explicit clientChat(QTcpSocket *s, QWidget *parent = nullptr);
~clientChat();
cpp
private:
Ui::clientChat *ui;
QTcpSocket *socket; //声明一个网络通信对象
5.2更改构造函数并赋值
cpp
clientChat::clientChat(QTcpSocket *s, QWidget *parent) :
QWidget(parent),
ui(new Ui::clientChat)
{
ui->setupUi(this);
socket = s; //s赋值给socket
}
5.3启动新窗口
cpp
clientChat *c = new clientChat(clientSocket); //创建窗口,把clientSocket传过去
c->show(); //显示窗口
6、清空输入框
cpp
void clientChat::on_clearPushButton_clicked()
{
ui->clientSendTextEdit->clear(); //清空数据发送区
}
7、发送数据
cpp
//发送数据
void clientChat::on_sendPushButton_clicked()
{
QString message = ui->clientSendTextEdit->toPlainText().trimmed(); //获取用户输入信息
QByteArray data = message.toUtf8(); //将QString类型转换为QByteArray
socket->write(data); //发送数据
}
8、.h文件和.cpp文件
8.1 widget.h
cpp
#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_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
private slots:
void on_canclePushButton_clicked(); //取消按钮
void on_connectPushButton_clicked(); //连接按钮
private:
Ui::Widget *ui;
QTcpSocket *clientSocket; //定义网络对象
};
#endif // WIDGET_H
8.2 widget.cpp
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); //创建窗口,把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(); //获取IP地址输入框文本
QString port = ui->portLineEdit->text(); //获取端口输入框文本
qDebug() << ip;
qDebug() << port;
clientSocket->connectToHost(QHostAddress(ip), port.toShort()); //连接到指定的主机和端口
}
8.3 clientchat.h
cpp
#ifndef CLIENTCHAT_H
#define CLIENTCHAT_H
#include <QWidget>
#include <QTcpSocket>
namespace Ui {
class clientChat;
}
class clientChat : public QWidget
{
Q_OBJECT
public:
// 构造函数:初始化一个新的 clientChat 实例,并将其与给定的 QTcpSocket 关联
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 // CLIENTCHAT_H
8.4 clientchat.cpp
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; //s赋值给socket
}
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(); //将QString类型转换为QByteArray
socket->write(data); //发送数据
}
9、总结
|----------------------------------------------------------------------------------------------------------|
| 以上就是实现QT启动新窗口的整个过程了,浏览过程中,如若发现错误,欢迎大家指 正,有问题的可以评论区留言或者私信。 最后,如果大家觉得有所帮助的话,可以点个 赞,谢谢大家!梦虽遥,追则能达;愿虽艰,持则可圆! |
QT启动新窗口完成!