【问题标题】:Qt can't acces ui element created in designerQt 无法访问在设计器中创建的 ui 元素
【发布时间】:2013-06-11 08:52:55
【问题描述】:

我在 Qt 设计器中创建了一个QComboBox。现在我想在我的mainwidget 中访问那个QComboBox。但是当创建者不认识ui->comboboxName。可能有一个简单的解决方案,但我似乎找不到。

这是我的ui文件中的QCombobox,我无法访问小部件标题或小部件源中的rolKeuze

<widget class="QComboBox" name="rolKeuze">
 <item>
  <property name="text">
   <string>Bouwmeester</string>
  </property>
 </item>
 <item>
  <property name="text">
   <string>Burgemeester</string>
  </property>
 </item>
</widget>

【问题讨论】:

  • 请发布您的 cpp 和 ui 文件。
  • 我们需要更多代码。至少你试图访问 rolKeuze 的头文件和 .cpp 文件
  • 清除所有,手动运行 qmake 并重建,通常会有帮助。

标签: c++ qt user-interface


【解决方案1】:

首先告诉我们您遇到的错误。

还要检查 ui 成员是否是指向 ui 生成代码的指针(它可能是一个对象,您需要 ui.comboboxName),有时工具不会检测到修改后的 .ui 文件和如果是这种情况,请不要为您的新添加小部件重新生成 c++ 代码,请使用 run qmake 而不是构建您的项目。

【讨论】:

  • 是的 ui 是一个成员,并且可以访问其他 ui 元素,例如我通过 ui->labelname 创建的标签,运行 qmake 没有帮助:S
  • rolKeuze 似乎是您的 QComboBox 的名称,因此代码将是:ui->rolKeuze
  • 未声明的变量 rolKeuze :S
  • 您可以删除生成的文件并强制 uic 重新生成这些文件(您可能希望备份您的项目并检查系统日期/时间和修改的文件日期/时间 - 可能存在一些不一致使用 run qmake from build menu 时生成的代码没有更新的原因)
  • 我找到了解决方案,显然 ui->qcombobox 名称确实有效,只是由于某种原因没有更新编辑器:d
【解决方案2】:

在我较旧的 qt3 环境中,我忘记使用 ui-item 将 QT 组合框的包含添加到 .cpp 文件中。因此,即使包含了 ui 文件,生成了 .cxx,代码仍然不知道“qcombobox”类型。因此必须将以下包含添加到 cpp 文件中

#include <qcombobox.h>

:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-11
    • 1970-01-01
    • 2017-10-16
    • 2011-05-24
    • 2016-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多