日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

两个独立的窗口和自定义信号

發布時間:2024/4/11 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 两个独立的窗口和自定义信号 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

兩個獨立的窗口和自定義信號

文章目錄

    • 兩個獨立的窗口和自定義信號
    • 1.兩個獨立的窗口
    • 2.自定義信號

1.兩個獨立的窗口

實現一個簡單的窗口程序:首先有兩個窗口,每個窗口當中都有一個按鈕,當點擊第一個窗口中的按鈕時顯示第二個窗口,隱藏第一個窗口,反之亦然。

2.自定義信號

自定義信號的規則:

  • 信號必須有signals進行聲明
  • 信號沒有返回值但是可以有參數
  • 信號就是函數的聲明,沒有實現也不需要實現
  • 使用時必須加上emit + 自定義信號的方式使用
  • 信號參數的個數可以比槽函數的參數個數多,反之不行
  • 一個信號可以連接多個槽,但是槽函數的執行順序是隨機的,不受控制
  • 槽函數可以同時接收多個信號
  • 信號連接成功后可以斷開連接disconnect
  • 信號可以連接信號
  • 槽函數可以是lanbda表達式
  • 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_H

    subwidget.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_H

    mainwidget.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(); }

    總結

    以上是生活随笔為你收集整理的两个独立的窗口和自定义信号的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。