#c #qt #slot
Вопрос:
Я пытаюсь разобраться в этой ошибке. У меня есть простое приложение, созданное с помощью Qt Creator.
У меня есть три кнопки, и 2 из них не включены. Затем, когда я нажимаю первую кнопку, я хочу сделать их видимыми, но когда я нажимаю кнопку, возникает ошибка Windows : «программа перестала работать». программа компилирует и делает все остальное.
QPushButton *dealButton = new QPushButton(tr("Deal cards"));
dealButton->show();
QPushButton *hitButton = new QPushButton(tr("HIT"));
hitButton->show();
hitButton->setEnabled(false);
QPushButton *standButton = new QPushButton(tr("STAND"));
standButton->show();
standButton->setEnabled(false);
...
connect(dealButton, SIGNAL(clicked()), this, SLOT(dealCards()));
...
void MainWindow::dealCards()
{
hitButton->setEnabled(true);
standButton->setEnabled(true);
}
таков код.
Ответ №1:
Проблема заключается в том, что вы повторно объявляете dealButton
и другие в вашем конструкторе (или в любой другой функции, у которой есть new
вызовы, которые вы показываете).
Вы должны иметь в своем определении класса:
private: // probably
QPushButton *dealButton;
И в вашем коде инициализации конструктора или графического интерфейса:
dealButton = new QPushButton(...); // note: not QPushButton *dealButton = ...
Теперь у вас есть возможность создать новую переменную с именем dealButton
, локальную для этой области (функции). Эта переменная скрывает (маскирует) члена класса.