欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Qt實現(xiàn)兩個獨立窗口的信號通信

 更新時間:2022年01月05日 14:48:45   作者:唐維康  
這篇文章主要為大家詳細介紹了Qt實現(xiàn)兩個獨立窗口的信號通信,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Qt實現(xiàn)兩個獨立窗口的信號通信的具體代碼,供大家參考,具體內容如下

知識點

Qt兩個窗口的建立、窗口的通信、處理子窗口的信號、信號的重載、Lamber表達式、自定義信號和自定義槽函數(shù)

結果演示

main.cpp

#include "mainwindow.h"
#include "subwidget.h"
#include <QApplication>

int main(int argc, char *argv[])
{
? ? QApplication a(argc, argv);
? ? MainWindow w;

? ? w.show();


? ? return a.exec();
}

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QPushButton>
#include "subwidget.h"

class MainWindow : public QMainWindow
{
? ? Q_OBJECT

public:
? ? MainWindow(QWidget *parent = 0);
? ? ~MainWindow();

public slots:
? ? void changeWin();
? ? void ShutDown();
? ? void delSub();
? ? void delSubPrint(int,QString);

private:
? ? QPushButton *p1;
? ? QPushButton *shutdown;//關閉按鈕
? ? SubWidget subW;

};

#endif // MAINWINDOW_H

subwidget.h

#ifndef SUBWIDGET_H
#define SUBWIDGET_H

#include <QWidget>
#include <QPushButton.h>

class SubWidget : public QWidget
{
? ? Q_OBJECT
public:
? ? explicit SubWidget(QWidget *parent = 0);
? ? void sendSlot();

signals:
? ? /* 信號必須有signals關鍵字來聲明
? ? ? ? ? * 信號沒有返回值,但可以有參數(shù)
? ? ? ? ? * 信號就是函數(shù)的聲明,只需聲明,無需定義
? ? ? ? ? * 使用:emit mySignal();
? ? ? ? ? * 信號可以重載
? ? ? */
? ? void mySignal();
? ? void mySignal(int,QString);

public slots:

private:
? ? QPushButton *subP1;//子窗口按鈕

};

#endif // SUBWIDGET_H

mainwindow.cpp

#include "mainwindow.h"
#include <QDebug> //打印

MainWindow::MainWindow(QWidget *parent)
? ? : QMainWindow(parent)
{
? ? resize(400,300);
? ? this->setWindowTitle("BOSS");
? ? p1=new QPushButton(this);
? ? //p1->setParent(this);
? ? p1->setText("切換到子窗口");

? ? shutdown=new QPushButton(this);
? ? shutdown->setText("關閉");
? ? shutdown->move(100,0);

? ? //關閉所有窗口
? ? connect(shutdown,&QPushButton::released,this,&MainWindow::ShutDown);


? ? //主窗口隱藏,子窗口顯示
? ? connect(p1,&QPushButton::released,this,&MainWindow::changeWin);
? ? /* &p1: 信號發(fā)出者,指針類型
? ? ? ? * &QPushButton::pressed:處理的信號, ?&發(fā)送者的類名::信號名字
? ? ? ? * this: 信號接收者
? ? ? ? * &MainWidget::close: 槽函數(shù),信號處理函數(shù) ?&接收的類名::槽函數(shù)名字
? ? ? ?*/

? ? ? ?/* 自定義槽,普通函數(shù)的用法
? ? ? ? * Qt5:任意的成員函數(shù),普通全局函數(shù),靜態(tài)函數(shù)
? ? ? ? * 槽函數(shù)需要和信號一致(參數(shù),返回值)
? ? ? ? * 由于信號都是沒有返回值,所以,槽函數(shù)一定沒有返回值
? ? ? ? */

? ? //主窗口調用子窗口的信號
? ? //主窗口顯示,子窗口隱藏
? ? //connect(&subW,&SubWidget::mySignal,this,&MainWindow::delSub);//函數(shù)重載用不了

? ? //信號的重載 一個有參數(shù) 一個無參數(shù)
? ? //接收子窗口的信號方式一
// ? ?void (SubWidget::*SignalOnly)()=&SubWidget::mySignal;
// ? ?connect(&subW,SignalOnly,this,&MainWindow::delSub);

// ? ?void (SubWidget::*SignalCanShu)(int,QString)=&SubWidget::mySignal;
// ? ?connect(&subW,SignalCanShu,this,&MainWindow::delSubPrint);

? ? //接收子窗口的信號方式二:宏函數(shù)SIGNAL
? ? connect(&subW,SIGNAL(mySignal()),this,SLOT(delSub()));
? ? connect(&subW,SIGNAL(mySignal(int,QString)),this,SLOT(delSubPrint(int,QString)));

? ? //Lambda表達式, 匿名函數(shù)對象
? ? //C++11增加的新特性, 項目文件: CONFIG += C++11
? ? //Qt配合信號一起使用,非常方便
? ? QPushButton *LamPush=new QPushButton(this);
? ? LamPush->setText("Lamber表達式");
? ? LamPush->move(180,0);
? ? int a=10;

? ? connect(LamPush,&QPushButton::clicked,
? ? ? ? ? ? [=](){
? ? ? ? ? ? ? ? ? ? qDebug()<<a;
? ? ? ? ? ? ? ? ? }

? ? ? ? ? ? );


}

void MainWindow::changeWin(){
? ? this->hide();
? ? subW.show();
}

//關閉窗口
void MainWindow::ShutDown(){
? ? this->close();
? ? subW.close();
}

void MainWindow::delSub(){
? ? subW.hide();
? ? this->show();
}

void MainWindow::delSubPrint(int age,QString name){
? ? // str.toUtf8() -> 字節(jié)數(shù)組QByteArray
? ? ?// ……data() ?-> QByteArray -> char *
? ? qDebug() << age << name.toUtf8().data();
}

MainWindow::~MainWindow()
{

}

subwidget.cpp

#include "subwidget.h"

SubWidget::SubWidget(QWidget *parent) :
? ? QWidget(parent)
{
? ? this->setWindowTitle("SUB");
? ? subP1=new QPushButton(this);
? ? subP1->setText("切換到主窗口");

? ? resize(500,400);

? ? //子窗口發(fā)送信號 信號是有參數(shù)+無參數(shù)的
? ? connect(subP1,&QPushButton::clicked,this,&SubWidget::sendSlot);

}

//回調函數(shù)
void SubWidget::sendSlot(){
? ? emit mySignal();
? ? emit mySignal(26,"唐維康");
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 利用C++實現(xiàn)從std::string類型到bool型的轉換

    利用C++實現(xiàn)從std::string類型到bool型的轉換

    利用C++實現(xiàn)從std::string類型到bool型的轉換。需要的朋友可以過來參考下。希望對大家有所幫助
    2013-10-10
  • C++面向對象中構造函數(shù)使用詳解

    C++面向對象中構造函數(shù)使用詳解

    學習過C語言的小伙伴知道:C語言是面向過程的,關注的是過程,分析出求解問題的步驟,通過函數(shù)調用逐步解決問題,這篇文章主要介紹了C++面向對象中構造函數(shù)使用
    2022-10-10
  • C++詳解使用floor&ceil&round實現(xiàn)保留小數(shù)點后兩位

    C++詳解使用floor&ceil&round實現(xiàn)保留小數(shù)點后兩位

    這篇文章主要介紹了C++使用floor&ceil&round實現(xiàn)保留小數(shù)點后兩位的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • C++實現(xiàn)合并兩個排序的鏈表

    C++實現(xiàn)合并兩個排序的鏈表

    這篇文章主要為大家詳細介紹了C++實現(xiàn)合并兩個排序的鏈表,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-03-03
  • 舉例說明自定義C++異常處理的實例

    舉例說明自定義C++異常處理的實例

    這篇文章主要介紹了舉例說明自定義C++異常處理的實例的相關資料,這里舉例說明該如何使用C++ 的異常,需要的朋友可以參考下
    2017-10-10
  • C語言深入淺出講解順序表的實現(xiàn)

    C語言深入淺出講解順序表的實現(xiàn)

    線性表是最簡單的數(shù)據(jù)結構,而順序表又是最簡單的線性表,其基本思想是用一段地址連續(xù)的儲存單元依次存儲線性表的數(shù)據(jù)元素,比如我們常用的一維數(shù)組,下面代碼實現(xiàn)了順序表的定義以及基本操作
    2022-04-04
  • C語言#define拼接宏定義實現(xiàn)方式

    C語言#define拼接宏定義實現(xiàn)方式

    今天小編就為大家分享一篇C語言#define拼接宏定義實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • c++創(chuàng)建二維動態(tài)數(shù)組與內存釋放問題

    c++創(chuàng)建二維動態(tài)數(shù)組與內存釋放問題

    這篇文章主要介紹了c++創(chuàng)建二維動態(tài)數(shù)組與內存釋放問題,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-06-06
  • C++指向函數(shù)的指針實例解析

    C++指向函數(shù)的指針實例解析

    這篇文章主要介紹了C++指向函數(shù)的指針,需要的朋友可以參考下
    2014-07-07
  • C語言順序表的基本結構與實現(xiàn)思路詳解

    C語言順序表的基本結構與實現(xiàn)思路詳解

    順序表是用一段物理地址連續(xù)的存儲單元依次存儲數(shù)據(jù)元素的線性結構,一般情況下采用數(shù)組存儲。本文將通過示例為大家講解一下順序表的基本操作,需要的可以參考一下
    2023-02-02

最新評論