标签:connect Widget 窗口 sub Sub window 切换 QWidget QT
程序主要功能:创建两个独立窗口,窗口各设计一个按钮控件,按下按钮实现本界面关闭,另一界面打开。
主界面 子界面
主要程序:
1:新建主界面继承QWidget,UI界面上按钮控件
#ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include"sub_window.h" namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0); ~Widget(); public slots: void main_change_sub(); void sub_change_main(); private: Ui::Widget *ui; Sub_window sub_A; }; #endif // WIDGET_H
#include "widget.h" #include "ui_widget.h" Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); connect(ui->pushButton,&QPushButton::pressed,this,&Widget::main_change_sub); //connect(&sub_A,SIGNAL(mysignal()),this,SLOT(sub_change_main()));//QT4写法 connect(&sub_A,&Sub_window::mysignal,this,&Widget::sub_change_main);//QT5写法 /*connect(&sub_A,&Sub_window::mysignal, [=]() { this->sub_change_main(); } );*/ } Widget::~Widget() { delete ui; } void Widget::main_change_sub() { this->hide(); sub_A.show(); } void Widget::sub_change_main() { this->show(); sub_A.hide(); }
2:增加一个窗口类,继承QWidget
#ifndef SUB_WINDOW_H #define SUB_WINDOW_H #include <QWidget> #include <QPushButton> class Sub_window : public QWidget { Q_OBJECT public: explicit Sub_window(QWidget *parent = nullptr); QPushButton button;//子界面定义一个按钮控件 signals: void mysignal();//信号只要定义不用声明 public slots: void sendmysignal(); }; #endif // SUB_WINDOW_H
#include "sub_window.h" Sub_window::Sub_window(QWidget *parent) : QWidget(parent) { button.setParent(this);//指定按键的父对象 this->setFixedSize(200,200); button.setText("切换到主界面"); button.move(50,50); connect(&button,&QPushButton::pressed,this,&Sub_window::sendmysignal); } void Sub_window::sendmysignal() { emit mysignal(); }
程序注意事项:
1:子界面需要通过自定义信号来通知主界面——mysignal()
2:主程序需要包含子界面的头文件,创建子界面—— #include"sub_window.h" ,Sub_window sub_A;
3:QT信号和槽connect的三种方法
(1):connect(&发送者,SIGNAL(信号函数),接受者,SLOT(槽函数))
(2):connect(&发送者,&发送者父类::信号,&接收者,&接收者父类::槽)
(3):connect(&发送者,&发送者父类::信号,[=](){槽函数}) // LAMBDA表达式,使用LAMBAD需要在工程文件下添加CONFIG +=C++11
标签:connect,Widget,窗口,sub,Sub,window,切换,QWidget,QT 来源: https://www.cnblogs.com/songpingzjj/p/14280029.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。