チェック可能な QAction オブジェクトを含む QMenu を作成したいと考えています。アクションがチェックされると、アクションが実行され、3D オブジェクトの描画が有効になります。ただし、3D オブジェクトの数は、ロードするファイルによって異なります。したがって、この QMenu には動的な数の QAction オブジェクトがあります。"1"、"2"、... "10" という名前の 10 個の 3D オブジェクトがあり、QMenu 内の QAction オブジェクトは "1"、"2"、... "10" と表示されるとします。これらのいずれかにチェックを入れると、その名前の 3D オブジェクトが表示可能になります。
動的 QAction オブジェクトを生成するコード:
QStringList labels = defaultScene->getLabels();
for(int i=0; i<labels.size(); i++){
QAction* labelAction = new QAction(labels[i], this);
labelAction->setToolTip("Trace Marker " + labels[i]);
labelAction->setStatusTip("Trace Marker " + labels[i]);
labelAction->setCheckable(true);
traceMenu->addAction(labelAction);
}
私の質問は、これらの QAction オブジェクトをどのように接続するのですか? 具体的には、defaultScene に bool の配列があり、QAction が切り替えられると切り替えられます。どの QAction が起動しているかを知るにはどうすればよいですか? トグル上の QAction の SIGNAL は bool のみを通過します。理想的には、defaultScene に 1 つの関数を用意します。
void toggleObject3D(int index){
if(index >= 0 && index < visibleSize){
visible[index] = !visible[index];
}
}
したがって、これを機能させるには、int 変数を起動する traceMenu からのある種の SIGNAL が必要です。私はそのようなSIGNALを知りません。