做两个切换窗口:
点击小弟,切换到另一个窗口:

主函数:
#include "mainwidget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWidget w;//执行构造函数
w.show();
return a.exec();
}
基类构造函数:
#include "mainwidget.h"
#include<QPushButton>
MainWidget::MainWidget(QWidget *parent)
: QWidget(parent)
{
b1.setParent(this);
b1.setText("帅哥");
b1.move(100,100);
b2=new QPushButton(this);
b2->setText("-_-");
connect(&b1,&QPushButton::pressed,this,&MainWidget::close);
connect(b2,&QPushButton::released,this,&MainWidget::MySlot);
setWindowTitle("别爱我 没结果");
b3.setParent(this);
b3.setText("小弟");
b3.move(50,50);
//w.show();
connect(&b3,&QPushButton::released,this,&MainWidget::change);
connect(&w,&Subwidget::mysignal,this,&MainWidget::dealSub);
}
void MainWidget::dealSub(){
w.hide();
this->show();
}
void MainWidget::change(){
w.show();
this->hide();
}
MainWidget::~MainWidget()
{
}
派生类继承函数:
#include "subwidget.h"
Subwidget::Subwidget(QWidget *parent) : QWidget(parent)
{
this->setWhatsThis("xiaodi");
b.setParent(this);
b.setText("切换到主窗口");
connect(&b,&QPushButton::clicked,this,&Subwidget::Send);
}
void Subwidget::Send(){
emit mysignal();
}
主函数头文件:
#ifndef MAINWIDGET_H
#define MAINWIDGET_H
#include <QWidget>
#include<QPushButton>
#include "subwidget.h"
class MainWidget : public QWidget
{
Q_OBJECT
public:
MainWidget(QWidget *parent = nullptr);
void MySlot(){
b2->setText("对 我最帅");
}
void dealSub();
void change();
~MainWidget();
private:
QPushButton b1;
QPushButton *b2;
QPushButton b3;
Subwidget w;
};
#endif // MAINWIDGET_H
派生类头文件:
#ifndef SUBWIDGET_H
#define SUBWIDGET_H
#include <QWidget>
#include<QPushButton>
class Subwidget : public QWidget
{
Q_OBJECT
public:
explicit Subwidget(QWidget *parent = nullptr);
void Send();
signals:
void mysignal();
private:
QPushButton b;
};
#endif // SUBWIDGET_H
以上仅作为学习笔记,不具有参考价值。
派生类在主函数点击“小弟”时,函数实现主函数窗口隐藏,派生类窗口出现。子类点击按钮时,传递信号,基类窗口出现,子类隐藏。
本文介绍了使用Qt库实现窗口之间的切换,通过点击按钮触发信号槽机制,实现主窗口与派生窗口的显示与隐藏。点击'小弟'按钮,主窗口隐藏,派生窗口显示;而在派生窗口中点击按钮,派生窗口隐藏,主窗口重新出现。展示了Qt的事件处理和窗口管理基础概念。
1435

被折叠的 条评论
为什么被折叠?



