【问题标题】:using Qt designer in visual studio?在 Visual Studio 中使用 Qt 设计器?
【发布时间】:2012-01-08 07:27:22
【问题描述】:

我正在使用 Visual Studio 2010,Qt 插件等一切正常,然后使用 Qt 插件创建新项目...在 VS 中双击 *.ui(实际表单)文件时,它会打开 Qtdesigner,然后我放一些控件,但这根本不会改变我的代码:/

Qt 表单已更改,它包含这些控件,但源文件与以前相同,即使在构建我的项目之后也是如此。

我错过了什么? 我认为 Qtdesinger 应该为我使用 Qtdesigner 创建的对象添加一些代码。

因为没有它,我们必须编写所有代码,就好像没有 Qtdesigner 一样,所以 Qtdesinger 在 Visual Studio 中是无用的,我们可以通过手动编写表单界面来做同样的事情。 非常感谢。

编辑:

好的 我从 Qt 网站复制了这个:

您正在引用 .ui 文件中的对象...

Visual Studio 代码模型解析器仅解析 C++ 源代码,这意味着 .ui 文件中定义的小部件或对象将无法访问。 要解决此问题,Qt Visual Studio 插件会自动 通过保存文件并运行从 .ui 文件生成 C++ 代码 uic就可以了。每次构建项目时都会执行此步骤。如果 代码完成不起作用,尝试重建项目。它是 可能您必须等待一段时间才能完全完成代码 更新 .ui 文件后工作。有关更多信息,您可以参考 到修改项目属性部分。还是不行……

您应该刷新代码模型,Intellisense。这是由 打开解决方案资源管理器,调用 项目并激活更新 Intellisense 项。

现在看来我遇到了这样的问题,但这根本没有帮助,更新 intelisece。我在视觉工作室中看不到这样的选项, 看来我的 Visual Studio 插件无法正常工作。

它说“你应该刷新代码模型” 呜呜?谁能解释一下我该怎么做。

以下是构建我的项目时的一些输出警告:

警告 1 警告:'C:\Users\Admin\documents\visual 中没有资源 工作室 2010\Projects\VisualStudio\test\test.qrc'。 C:\Users\Admin\documents\visual 工作室 2010\Projects\VisualStudio\test\RCC 警告 2 警告 LNK4099: 使用 'qtmaind.lib(qtmain_win.obj)' 或在 'C:\Users\Admin\documents\visual studio 2010\项目\VisualStudio\vc100.pdb';链接对象好像没有调试 信息 C:\Users\Admin\documents\visual studio 2010\Projects\VisualStudio\test\qtmaind.lib(qtmain_win.obj)

【问题讨论】:

    标签: visual-studio qt


    【解决方案1】:

    我将稍微解释一下事情是如何工作的以及文件之间的关系,希望这能解决您的问题。

    当您使用设计器编辑 ui 文件时,会对 ui 文件本身进行所有更改。然后,当您构建时会发生一些事情。

    首先...将在 ui 文件上运行自定义构建步骤。正如 Macke 所说,此构建步骤运行“uic”,并将生成一个名为“ui_thenameofyouruifile.h”的文件。该文件的位置取决于您的项目设置,但如果您查看项目,您应该会在项目中看到一个名为 Generated Files 的文件夹。

    如果您在那里查看,您应该会看到新生成的文件。这是在您对表单进行更改时“更改”的代码。现在,如果这个文件没有更新,或者根本不存在,那么你的项目设置不知何故搞砸了。在这种情况下,我会从项目中删除您的 .ui 文件并重新添加它。加载项应该很神奇并添加您需要的所有东西。再次构建,它应该可以工作。 (我想这可能是你的问题)

    构建时应该发生的第二件事是,使用您的 ui 文件的类应该重新编译。通常在创建 ui 文件时,还会创建一个随附的 .h 和 .cpp 文件。这是我们在窗口中执行我们可能需要的任何有趣逻辑的地方。 Qt 设计者永远不会改变这个类。

    在头文件中,我们通过这样做来引用 ui 文件:

        namespace Ui {
           class thenameofyouruifile;
        }
    
       #include "ui_thenameofyouruifile.h"
    

    然后我们添加一个成员变量

    Ui::thenameofyouruifile UI;

    有几种方法可以做到这一点,但基本上就是这样。该加载项应该配置您的项目,以便生成文件所在的目录包含在您的项目设置中的“其他包含目录”中,但这是另一个检查以确保您的代码真正链接的地方正确生成的文件。

    【讨论】:

    • 嗨,你说“Qt 设计者永远不会改变这个类。”老实说,那是我的不匹配。我现在很愚蠢,大声笑,生成的文件还可以,但我认为 Qtdesigner 会将一些骨架代码放入我的类源中,这样我就可以继续将我的代码放入其中。至少在使用 CLR 表单时是这样。VS 将放置那些骨架代码,因此您可以继续放置自己的代码,遗憾的是 Qt-addin 并非如此。非常感谢您和其他人的解释!
    【解决方案2】:

    如果 Qt 插件安装正确,它应该为 Qt 相关文件(.ui 或 moc 文件)生成自定义构建步骤。我没有用 VS 2010 试过 Qt Add-in,但是用 VS 2008 没问题。

    解决方法解决您的问题,您需要为项目中的每个 ui 文件手动添加自定义构建步骤。为此,步骤是:

    1. 右键单击 ui 文件,然后单击属性(我正在使用 VS-2008 执行此步骤,预计在 VS 2010 中可能不会有太大不同)。

    2. 在自定义构建步骤下,在命令行中添加:"$(QTDIR)\bin\uic.exe" -o ".\GeneratedFiles\ui_$(InputName).h" "$(InputPath) "

    3. 并在输出下添加:“.\GeneratedFiles\ui_$(InputName).h”

    4. 这在附加依赖项下:$(QTDIR)\bin\uic.exe。然后点击应用/确定。

    如果这样,ui文件是可编译的,(右键可以编译),所以当ui文件内容发生变化时,会重新生成新的ui代码(.h)文件。

    或者,要重置 VS 项目文件 (vcprojx),您可以在 Qt creator 中创建 Qt 项目(或者如果您已经有一个),然后使用以下命令行将 Qt creator 项目 (.pro) 转换为 vcproj:

    qmake -spec win32-msvc2010 -tp vc
    

    这将为您创建具有适当自定义构建步骤的 vcproj(如果您有许多 ui 文件,则无需执行第一种方法)。

    【讨论】:

    • 非常感谢您提供此信息,我将复制您的帖子并将其用于将来自定义构建的参考。
    【解决方案3】:

    如果您使用新的类向导创建了一个 Qt 小部件,则应该可以正常工作。

    即您的 .ui 文件由 Qt 的 uic 编译为 .cpp 文件,即您需要构建项目以将这些更改放入 ui 类。

    因此,应该将 .ui 文件添加到项目中,并有一些特殊的构建规则在它们上调用“uic”。如果不是这种情况,请尝试将它们重新添加到您的项目中(这样,Qt 插件应该配置构建规则)

    通常,您有一个继承 QWidget 的类,该类然后包含已编译的 cpp 类,以某种方式,通常作为成员变量(但继承也是一种选择)。

    直接添加一个 .ui 文件也应该可以(如果你在 Qt 项目中,你就是......),但显然有问题。

    示例项目是否按预期工作?

    【讨论】:

    • “你需要构建你的项目”是什么意思? ,我已经对其进行了修改,并且没有对源文件进行任何更改。你能更详细地了解建筑吗?
    • 您是否使用“新类”向导创建 Qt 小部件?如果是这样,.ui 文件应该自动构建到 c++ 文件中,并且您应该有 .h/.cpp 文件(用于 Qt 小部件),这些文件从 ui 编译步骤导入输出.. .. 更新答案以包含相关信息..
    • 示例项目不工作,打开解决方案时显示一个或多个项目未添加...所有项目均已卸载且无法重新加载。我明白你在说什么,但没有运气,重建,读取文件等......来源仍然是一样的。
    猜你喜欢
    • 1970-01-01
    • 2010-10-08
    • 2013-05-20
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-30
    • 1970-01-01
    相关资源
    最近更新 更多