无法访问QPushButton奥秘

Inaccessible QPushButton mystery

本文关键字:奥秘 QPushButton 访问      更新时间:2023-10-16

我有一个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的记录是相同的。是什么原因导致了这个问题?

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

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

无论是在创建时,还是通过显式设置。

编辑:还要注意

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

我看到您通过删除ui_viewer.h解决了问题。但更干净的方法是运行qMake(从Build菜单)。当我遇到像你这样的错误时,我总是这样做——有时Qt Creator会忘记在应该运行qMake的时候运行它。

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