SLOT проблема / C ++ - PullRequest
       9

SLOT проблема / C ++

0 голосов
/ 28 мая 2011

Я пытаюсь понять эту ошибку.У меня есть простое приложение, созданное с помощью 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 Ответ

4 голосов
/ 28 мая 2011

Проблема в том, что вы повторно объявляете dealButton и другие в вашем конструкторе (или любой другой функции, которая имеет вызовы new, которые вы показываете).

Вы должны иметь вопределение вашего класса:

private: // probably
  QPushButton *dealButton;

И в вашем конструкторе или коде инициализации GUI:

dealButton = new QPushButton(...); // note: not QPushButton *dealButton = ...

Теперь у вас есть создание новой переменной с именем dealButton, которая является локальной для этой области(функция).Эта переменная скрывает (маскирует) члена класса.

...