SLOT问题/ C ++

时间:2011-05-28 12:36:48

标签: c++ qt slot

我试图弄清楚这个错误。我有一个使用Qt Creator创建的简单应用程序。

我有三个按钮,其中两个未启用。然后按下第一个按钮我想让它们可见,但是当我按下按钮时,会出现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 个答案:

答案 0 :(得分:4)

问题是你要在构造函数中重新声明dealButton和其他人(或者你正在显示new个调用的任何函数。)

你的班级定义应该有:

private: // probably
  QPushButton *dealButton;

在你的构造函数或gui初始化代码中:

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

您现在所拥有的是创建一个名为dealButton的新变量,该变量是该范围(函数)的本地变量。该变量隐藏(屏蔽)该类的成员。