01.QT初学--两个窗口相互切换

  1 //qqwidget.cpp
  2 #include "qqwidget.h"
  3 #include "ui_qqwidget.h"
  4 
  5 qqwidget::qqwidget(QWidget *parent) :
  6     QWidget(parent),
  7     ui(new Ui::qqwidget)
  8 {
  9     ui->setupUi(this);
 10 
 11     setWindowTitle("老大");
 12     b.setParent(this);
 13     b.setText("change");
 14 
 15     connect(&b,&QPushButton::released,this,&qqwidget::myslot);
 16 
 17     //处理子窗口信号
 18     connect(&sub1,&sub::mysignal,this,&qqwidget::myslot2);
 19 
 20 }
 21 
 22 qqwidget::~qqwidget()
 23 {
 24     delete ui;
 25 }
 26 void qqwidget::myslot()
 27 {
 28     this->hide();
 29     sub1.show();
 30 }
 31 void qqwidget::myslot2()
 32 {
 33     this->show();
 34     sub1.hide();
 35 }
 36 
 37 
 38 //sub.cpp
 39 #include "sub.h"
 40 
 41 sub::sub(QWidget *parent) : QWidget(parent)
 42 {
 43     b1.setParent(this);
 44     b1.setText("切换至主窗口");
 45 
 46 
 47     connect(&b1,&QPushButton::released,this,&sub::mysubslot);
 48 }
 49 
 50 void sub::mysubslot()
 51 {
 52     emit mysignal();
 53 }
 54 
 55 //qqwidget.h
 56 #ifndef QQWIDGET_H
 57 #define QQWIDGET_H
 58 
 59 #include <QWidget>
 60 #include <QPushButton>
 61 #include "sub.h"
 62 
 63 namespace Ui {
 64 class qqwidget;
 65 }
 66 
 67 class qqwidget : public QWidget
 68 {
 69     Q_OBJECT
 70 
 71 public:
 72     explicit qqwidget(QWidget *parent = nullptr);
 73     ~qqwidget();
 74     QPushButton b;
 75     void myslot();
 76     void myslot2();
 77     sub sub1;
 78 
 79 private:
 80     Ui::qqwidget *ui;
 81 };
 82 
 83 #endif // QQWIDGET_H
 84 
 85 
 86 //sub.h
 87 #ifndef SUB_H
 88 #define SUB_H
 89 
 90 #include <QWidget>
 91 #include <QPushButton>
 92 
 93 class sub : public QWidget
 94 {
 95     Q_OBJECT
 96 public:
 97     explicit sub(QWidget *parent = nullptr);
 98     QPushButton b1;
 99     void mysubslot();
100 signals:
101     void mysignal();
102 
103 public slots:
104 };
105 
106 #endif // SUB_H
View Code
1. sub窗口调用qqwidget主窗口时,在sub.h中sub类中自定义了信号函数,sub中将按钮与该信号函数connect。
  同时,在qqwidget主窗口中将该信号函数与某slot函数connect,从而执行操作。
  注:主窗口hide并不是消失,使用自定义信号函数connect后即可触发相应slot函数


  

原文地址:https://www.cnblogs.com/xuhongfei0021/p/10791016.html