难以接近的QPushButton之谜

时间:2011-06-16 14:39:55

标签: c++ qt qt-creator

我有一个QT应用程序。它有功能QPushButtons连接到我的程序中的插槽。我现在正在尝试添加一个新按钮myNewButton,但在某个地方,某种程度上它没有被注册。

对于现有的工作按钮myExistingButton,我有一行:

connect(ui->myExistingButton, SIGNAL(clicked()), this, SLOT(Foo()));

我不能简单地添加这一行:

connect(ui->myNewButton, SIGNAL(clicked()), this, SLOT(Foo()));

编译错误是:

class UI::Viewer has no member named 'myNewButton'

并且QT Creator没有将该按钮列为ui->的自动完成选项(即我没有简单地拼写错误的名称)。除了ui文件中的坐标和命名之外,myExistingButtonmyNewButton的记录是相同的。可能导致这个问题的原因是什么?

4 个答案:

答案 0 :(得分:1)

您是否正确设置了小部件父属性?

upon creationexplicitly setting it

编辑:还要注意

  • 您不应直接编辑ui_-includes,而是使用表单编辑器
  • 您不必为表单中难以声明的内容进行显式连接;再次,使用表单编辑器(右键单击按钮)

答案 1 :(得分:1)

我假设您确实在.ui表单中添加了一个新按钮,并将其命名为myNewButton,对吧?如果是这样,这可能是Qt Creator中的同步问题。您是否尝试过保存所有内容并重建(只是为了确保ui编译器被触发)您的应用程序?

答案 2 :(得分:1)

我看到您通过删除ui_viewer.h解决了您的问题。但更简洁的方法是运行qMake(来自Build菜单)。当我遇到像您这样的错误时,我总是会这样做 - 有时Qt Creator会忘记在qMake运行{。}}。

答案 3 :(得分:0)

我通过删除生成的文件ui_viewer.h然后重建来修复此问题。