2016-09-28 8 views
0
for(int i=0;i<2;i++) { for(int j=0;j<2,j++) { 
     snapshot_action[k]=new QAction(this); 
     snapshot_action[k]->setIconText("Snapshot"); 
     control_menu[k]->addAction(snapshot_action[k]); 
     connect(snapshot_action[k], &QAction::triggered, this, &SimplePlayer::snap_fun);}} 

最初はk=0; としましたが、それぞれスナップショットアクションで4つのビューをレイアウトするコードは省略しています。 ( 簡単にするために)。qtでSLOT関数にどのように値を渡すのですか?

問題は、どのビューのスナップショットアクションボタンを押しても、その特定のウィンドウのスナップショットアクションボタンが押されたことを知る必要があるということです。

どうすればいいですか?

どのように私のスナップ機能に価値を渡すでしょうか?

いくつかの配列に 'k'の値を格納する必要がありますか? (いくつかの悪いアイデア)

+1

シグナルの送信者を取得するには[QObject :: sender() '](http://doc.qt.io/qt-5/qobject.html#sender)を使うことができます。 –

+0

[' QSignalMapper' ](http://doc.qt.io/qt-5/qsignalmapper.html) – hank

答えて

1

あなたはQSignalMapperを使用することができます。

QSignalMapper m_mapWidget; 

コードでは:

connect(&m_mapWidget, SIGNAL(mapped(int)), this, SLOT(snap_fun_k(int))); 

ループK:あなたが欲しいよ

connect(action, SIGNAL(triggered()), &m_mapWidget, SLOT(map())); 
m_mapWidget.setMapping(action, k); 

注意シグナルマッパーの有効期間は少なくともマッピングを実行するのと同じくらい長くする必要があります。

関連する問題