两个独立的窗口和自定义信号
生活随笔
收集整理的這篇文章主要介紹了
两个独立的窗口和自定义信号
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
兩個獨立的窗口和自定義信號
文章目錄
- 兩個獨立的窗口和自定義信號
- 1.兩個獨立的窗口
- 2.自定義信號
1.兩個獨立的窗口
實現一個簡單的窗口程序:首先有兩個窗口,每個窗口當中都有一個按鈕,當點擊第一個窗口中的按鈕時顯示第二個窗口,隱藏第一個窗口,反之亦然。
2.自定義信號
自定義信號的規則:
mainwidget.h:
#ifndef MAINWIDGET_H #define MAINWIDGET_H#include <QWidget> #include <QPushButton> #include "subwidget.h"class MainWidget : public QWidget {Q_OBJECTpublic:MainWidget(QWidget *parent = 0);~MainWidget();void ChengeWin();//槽函數,當調用該函數時主窗口隱藏,子窗口顯示void dealsub();//槽函數,當調用該函數時主窗口顯示,子窗口隱藏 private:QPushButton b3;//主窗口中的按鈕SubWidget w;//主窗口中創建另外子一個窗口的對象 };#endif // MAINWIDGET_Hsubwidget.h:
#ifndef SUBWIDGET_H #define SUBWIDGET_H#include <QWidget> #include <QPushButton>class SubWidget : public QWidget {Q_OBJECT public:explicit SubWidget(QWidget *parent = nullptr);void SendSolt();//槽函數:功能是發送自定義的信號signals:void Mysignal();//自定義的信號public slots:private:QPushButton b;//自窗口當中的按鈕 };#endif // SUBWIDGET_Hmainwidget.cpp:
#include "mainwidget.h"MainWidget::MainWidget(QWidget *parent): QWidget(parent) {//給主窗口當中設置內容setWindowTitle("lao da");b3.setParent(this);b3.setText("get xiao di win");b3.move(210,210);//關聯主窗口當中的b3按鈕和主窗口,當觸發released信號時就執行ChengeWin槽函數connect(&b3,&QPushButton::released,this,&MainWidget::ChengeWin);//關聯子窗口和主窗口,當主窗口觸發Mysignal時執行dealsub槽函數connect(&w,&SubWidget::Mysignal,this,&MainWidget::dealsub);//固定窗口大小resize(400,400); } //對子窗口發送過來的信號進行處理 void MainWidget::dealsub() {w.hide();//子窗口隱藏this->show();//主窗口顯示 }//按鈕發送給主窗口的槽函數 void MainWidget::ChengeWin() {w.show();//子窗口顯示this->hide();//主窗口隱藏 }subwidget.cpp:
#include "subwidget.h"SubWidget::SubWidget(QWidget *parent) : QWidget(parent) {//設置自窗口屬性this->setWindowTitle("xiao di");b.setParent(this);b.move(80,80);b.setText("get lao da win");//關聯按鈕和子窗口,當觸發clicked信號時,執行SendSolt槽函數,//向主窗口發送自定義信號connect(&b,&QPushButton::clicked,this,&SubWidget::SendSolt);//固定窗口大小resize(400,400); }//給主窗口發送一個自定義的Mysignal信號 void SubWidget::SendSolt() {emit Mysignal(); }main.cpp:
#include "mainwidget.h" #include <QApplication>int main(int argc, char *argv[]) {QApplication a(argc, argv);MainWidget w;w.show();return a.exec(); }總結
以上是生活随笔為你收集整理的两个独立的窗口和自定义信号的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 指定父对象和信号与槽
- 下一篇: 带参的信号、lamda表达式及坐标系统