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_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
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_OBJECT
public:
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启动新窗口完成!