二つのウィンドウQT間の各スイッチング

  シグナル(信号)と溝(スロット)の例では、接続信号のスロットを有するC ++ 11のラムダ式を使用して、重要な機構QTあります。

ハンドオーバを達成するために互いに二つのウィンドウは、ボタンをクリックして完了し、送信信号のみサブウインドウを見て、扱うことができない、すべての信号処理機能は、メインプロセスウィンドウ定義に対応する溝であるべきです。

メインウィンドウ:

mywidget.h

#ifndefのMYWIDGET_H 
の#define MYWIDGET_H

の#include
<QWidgetの> する#include <のQPushButton> の#include " win_1.h " クラスはMyWidget:公共QWidgetの { Q_OBJECTの 公共 はMyWidget(QWidgetの *親= 0 )。 はMyWidget();
on_b1_clicked(); on_b3_clicked(); work_s1(); 無効 work_s2(int型、QStringの); プライベート のQPushButtonのB1、 * B2、B3; ワットwin_1; }。 #endifの // MYWIDGET_H

 

mywidget.cpp

#include "mywidget.h"

書式#include <QDebug>


MyWidget ::はMyWidget(QWidgetの
* 親) :はQWidget(親) { b1.setParent(この); b1.setText(" 按钮1 " )。 b1.move(100100 )。 B2 = 新しいのQPushButton(この); // B2->のsetParent(この); B2->のsetText(" 按钮2 " )。
(B2、接続&のQPushButton ::クリックした、この、&はMyWidget ::近いです)。接続(&B1、&のQPushButton ::クリックした、この、&はMyWidget :: on_b1_clicked)。(接続&B1、&のQPushButton ::クリック、B2、&はMyWidget ::非表示)。

setWindowTitle(
" 窗口1 " )。 b3.setParent(この); b3.setText(" 转到窗口2 " )。 b3.move(200200 )。 接続(&B3、&のQPushButton ::クリックした、この、&はMyWidget :: on_b3_clicked)。 無効(win_1 :: * signal_01)()=&:: signal_0 win_1; 無効(* :: win_1 signal_02)(int型、QStringの)=&win_1 :: signal_0; 接続(&W、signal_01、この、&はMyWidget :: work_s1); 接続(&W、signal_02、この、&はMyWidget work_s2::); // ラムダ式は、読み取り専用、.PROファイルに配置されたC ++ 11留意 // =値は、すべての外部のメンバーが渡さ // このクラスは、すべてのメンバーが値によって渡される // &外入ってくるすべての参照 のQPushButton * B4 = 新新のQPushButton(この;) B4 >のsetText( - " LAMBDA式" ); B4 - >移動(400400 ); int型 A = 10 ; 接続(B4、 のQPushButton ::クリック、 [ =](BOOL BB)可変// 値を変更するには、変更可能な追加する必要 { B4 - >のsetText(" ラムダ式を" )。 ++ ; qDebug() << " 成功!!! " << << BB; } );   //設定されたサイズ、ウィンドウサイズは切り替えないように変更され 、リサイズ(600480 );
}
のボイドはMyWidget :: on_b1_clicked (){ b1.setText(" 我是按钮1 " )。 } ボイドはMyWidget :: on_b3_clicked(){ この - > 非表示()。 w.show(); } ボイドはMyWidget :: work_s1(){ w.hide()。 公演(); } ボイドはMyWidget :: work_s2(int型I、QStringのS){ qDebug() << I << s.toUtf8()データ()。 } はMyWidget ::はMyWidget() { }

子ウィンドウ:

win_1.h

#ifndefのWIN_1_H
 の#define WIN_1_H 

の#include <QWidgetの> 
する#include <のQPushButton> クラス win_1:公共QWidgetの
{ 
    Q_OBJECTの公共明示 win_1(QWidgetの*親= nullptr)。
    send_s1(); 
信号:無効signal_0(); //不带参信号
     のボイド signal_0(int型、QStringの); //带参信号公共スロット:プライベート
    のQPushButtonのB1; 
}。#endifの// WIN_1_H




    






 

win_1.cpp

#include " win_1.h " 

win_1 :: win_1(QWidgetの * 親):QWidgetの(親)
{ 
    setWindowTitle(" 窗口2 " )。
    b1.setParent(この); 
    b1.setText(" 转到窗口1 " )。

    (接続&B1、&のQPushButton ::クリックした、この、&win_1 :: send_s1)。

    リサイズ(600480 )。
} 
ボイドwin_1 :: send_s1(){ 
    )(signal_0を発します。
    放射signal_0(250" 转到窗口1 " )。
}

おすすめ

転載: www.cnblogs.com/creature-lurk/p/11616462.html