こんにちは、私はQtシーンが新しく、comboBox1の選択に基づいてcomboBox2を更新するのに問題があります。Qt ComboBox1に基づいてComboBox2を変更してください
いつも私はcomboBox1に変更を加えると、私のアプリケーションがクラッシュし、アクセス違反と言っていました。これはおそらく非常に簡単ですが、私のコードは次のとおりです。この場合、最初のcomboBox1には "Car"と "Food"があります。私が「食べ物」に切り替えるたびに、私はcomboBox2が項目「卵」を埋めるようにしたい。
何が問題になりましたか?
main.h
class main:
{
Q_OBJECT
public:
main() {}
public slots :
private slots:
void onComboBoxIndexChanged();
private:
QComboBox* comboBox2;
void run();
};
main.cppに
void main::run()
{
QWidget *w = new QWidget();
QComboBox *comboBox1 = new QComboBox();
QComboBox *comboBox2 = new QComboBox();
comboBox1->addItem("Car");
comboBox1->addItem("Food");
connect(comboBox1, SIGNAL(currentIndexChanged(int)), this, SLOT(onComboBoxIndexChanged()));
...
}
void main::onComboBoxIndexChanged()
{
QComboBox* combo = dynamic_cast<QComboBox*>(sender());
if (combo == nullptr)
{
return;
}
comboBox2->addItem("Egg");
}
あなたは新しい 'QComboBox'オブジェクトを' run'関数のローカル変数に割り当てているようです。おそらく、それをメンバー 'comboBox2'に割り当てることを意図していました。 – Mike
ちょっと@ミークそれはタイプミスです。私は実際にcomboBox2に割り当てています。コードに問題がありますか? – Arbitel