【发布时间】:2016-11-11 23:44:38
【问题描述】:
您好,我是 Qt 场景的新手,我在根据 comboBox1 选择更新我的 comboBox2 时遇到问题。
每次我在 comboBox1 中进行更改时,我的应用程序都会崩溃,说访问冲突。这可能非常简单,但这是我的代码:在这种情况下,最初的 comboBox1 有“汽车”和“食物”。每当我切换到“食物”时,我希望我的 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。你看到代码有问题吗?