が必要になります。Qtのプッシュボタンは、2つのスロットを呼び出していると私は、私はこのコードを持って、私は別のボタン と2つの関数を呼び出す必要が1
signalMapperSelections = new QSignalMapper();
QPushButton *selected_type_button = new QPushButton();
selected_type_button->setObjectName("selected_type_button");
selected_type_button->setText(get_selected_type().replace(" ", "\n"));
selected_type_button->setMinimumHeight(80);
selected_type_button->setMinimumWidth(80);
selected_type_button->setMaximumHeight(80);
selected_type_button->setMaximumWidth(80);
selected_type_button->setStyleSheet(style_toolbutton);
ui->verticalLayout_selections->addWidget(selected_type_button);
connect(selected_type_button, SIGNAL(clicked()), signalMapperSelections, SLOT(map()));
signalMapperSelections->setMapping(selected_type_button, get_selected_type());
connect(signalMapperSelections, SIGNAL(mapped(QString)), this, SLOT(show_brands(QString)));
QPushButton *selected_brand_button = new QPushButton();
selected_brand_button->setObjectName("selected_brand_button");
selected_brand_button->setText(get_selected_brand().replace(" ", "\n"));
selected_brand_button->setMinimumHeight(80);
selected_brand_button->setMinimumWidth(80);
selected_brand_button->setMaximumHeight(80);
selected_brand_button->setMaximumWidth(80);
selected_brand_button->setStyleSheet(style_toolbutton);
ui->verticalLayout_selections->addWidget(selected_brand_button);
connect(selected_brand_button, SIGNAL(clicked()), signalMapperSelections, SLOT(map()));
signalMapperSelections->setMapping(selected_brand_button, get_selected_brand());
connect(signalMapperSelections, SIGNAL(mapped(QString)), this, SLOT(show_models(QString)));
私は「selected_type_button」私だけ実行したい」をクリックすると、 show_brands "を参照してください。しかし、それは "show_brands"と "show_models"の両方の関数を実行しています... Qt :: UniqueConnectionを試しましたが、この問題は修正されません。 両方のボタンが同じ信号を使用しているので、これが起こっていると思います...しかし、私はそれを修正する方法がわかりません。
どうすればこの問題を解決できますか?
QSignalMapperを使用する理由は何ですか? 'signal_ype_bytton'が' show_brand() 'と' signal_brand_button'を起動して 'show_models()'を起動させたいのであれば、 'QSignalMapper'を全く使う必要はありません。 – Mike
現在、両方のボタンがマップされた 'map()'スロットを起動します。後者は 'show_models'と' show_brands'の両方のスロットに接続されているので、いずれかのボタンがクリックされたときに呼び出されます。これは 'QSignalMapper'が使われる方法ではないと思います。正確に何をしたいのかを記述してください。 – Mike
のスロットに渡すQString引数は何ですか?QStringは選択されたタイプまたは選択されたブランドです。 – vitor13almeida