Qt中主页面跳转下一页面&下一页面跳回主页面相关操作

      目标:实现主副窗口之间通过Button按钮进行切换  ,利用connect链接信号槽实现主页面到副页面的切换。相反由副页面不能直接切回主界面,同样的方法不在使用,Qt中,副页面想要返回主页面,需要在点击按钮的时刻,发送一个back()的信号,主界面监听到信号后利用connect返回。

        1.在Qt中创建Widget主窗口,并设置窗口大小以及窗口标题,在头文件中维护一个副窗口的指针。代码如下:

        widget.h文件中维护下一页面指针(没有直接实现创建)

#ifndef WIDGET_H
#define WIDGET_H
#include"youpage.h"

#include <QWidget>

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    explicit Widget(QWidget *parent = 0);
    ~Widget();
    //维护下一页面的指针
    youpage *pg;

private:
    Ui::Widget *ui;
};

#endif // WIDGET_H

        widget.cpp中设置窗口的属性等

创建副页面youpage,.h文件中设置返回信号,用于主界面监听,.cpp文件也是和主界面相同的属性等

。然后通过两个界面的按钮实现切换。

.h

#ifndef YOUPAGE_H
#define YOUPAGE_H

#include <QWidget>

class youpage : public QWidget
{
    Q_OBJECT
public:
    explicit youpage(QWidget *parent = 0);

signals:
    void back();

public slots:


};

#endif // YOUPAGE_H

.cpp

#include "youpage.h"
#include<QPushButton>

youpage::youpage(QWidget *parent) :
    QWidget(parent)
{
    this->setFixedSize(320,588);
    this->setWindowTitle("副页面");
    QPushButton *bt =new QPushButton("返回主界面",this);
    bt->move(120,270);

    connect(bt,&QPushButton::clicked,[=](){
       emit this->back();
    });

}

主界面监听:

#include<QPushButton>
#include"youpage.h"

Widget::Widget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Widget)
{
    ui->setupUi(this);
    QPushButton *button=new QPushButton("进入副界面",this);
    button->setParent(this);
    button->move(120,270);
    this->setWindowTitle("主界面");
    //设置窗口固定大小
     this->setFixedSize(320,588);
    
    //新页面
    pg=new youpage;
    connect(button,&QPushButton::clicked,[=](){
        this->hide();
        pg->show();
    });
    //监听副页面发出的信号
    connect(pg,&youpage::back,[=](){
      pg->hide();
      this->show();
    });

最终结果如下:

 

  • 9
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个简单的示例代码,展示如何在QT中实现登录界面和主页面之间的转: ```python from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QVBoxLayout, QHBoxLayout, QMessageBox class LoginWindow(QWidget): def __init__(self): super().__init__() self.username_label = QLabel("Username:") self.username_edit = QLineEdit() self.password_label = QLabel("Password:") self.password_edit = QLineEdit() self.password_edit.setEchoMode(QLineEdit.Password) self.login_button = QPushButton("Login") self.login_button.clicked.connect(self.login) vbox = QVBoxLayout() hbox1 = QHBoxLayout() hbox2 = QHBoxLayout() hbox1.addWidget(self.username_label) hbox1.addWidget(self.username_edit) hbox2.addWidget(self.password_label) hbox2.addWidget(self.password_edit) vbox.addLayout(hbox1) vbox.addLayout(hbox2) vbox.addWidget(self.login_button) self.setLayout(vbox) self.setWindowTitle("Login") def login(self): # 假设正确的用户名和密码是 "admin" 和 "password" if self.username_edit.text() == "admin" and self.password_edit.text() == "password": self.close() self.main_window = MainWindow() self.main_window.show() else: QMessageBox.warning(self, "Error", "Incorrect username or password") class MainWindow(QWidget): def __init__(self): super().__init__() self.greeting_label = QLabel("Welcome to the main window!") vbox = QVBoxLayout() vbox.addWidget(self.greeting_label) self.setLayout(vbox) self.setWindowTitle("Main Window") if __name__ == '__main__': app = QApplication([]) login_window = LoginWindow() login_window.show() app.exec_() ``` 这个示例中,`LoginWindow` 类表示登录界面,`MainWindow` 类表示主页面。当用户在登录界面中输入正确的用户名和密码并点击登录按钮时,程序将关闭登录界面并打开主页面。如果输入的用户名或密码不正确,程序将弹出一个警告对话框。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值