【问题标题】:MSVC2012 Qt supposed to include a directory?MSVC2012 Qt 应该包含一个目录吗?
【发布时间】:2012-12-25 12:45:16
【问题描述】:

我使用 BlueGo 为 msvc2012 构建了一个自定义 Qt5。

我正在阅读示例,它们显示了这一点:

#include <QtGui>

 int main(int argc, char *argv[])
 {
     QApplication app(argc, argv);
     QWidget window;
     window.resize(320, 240);
     window.show();
     window.setWindowTitle(
         QApplication::translate("toplevel", "Top-level widget"));
     return app.exec();
 }

问题是,QtGui 对我来说实际上是一个目录而不是一个文件,所以它不能被包含。我正在使用 /qtbase/include/ 下的包含文件。我做错了吗?

【问题讨论】:

    标签: c++ qt include qtwidgets qapplication


    【解决方案1】:

    QtGui 头文件确实存在,并且只是包含了来自 QtGui 模块的所有头文件。您可以在内部 QtGui 目录中找到它。编译器能够找到它,因为在包含路径中指定了 QtGui 目录。换句话说,它与以下内容相同:

    #include <QtGui/QtGui>
    

    不过,包含 QtGui 标头是一种糟糕的做法。您应该只包含您实际使用的内容,否则编译时间将无缘无故地增加。但是,对于快速测试等,它非常方便。

    【讨论】:

    • 嗯......即使文件看起来不像它,我添加了那行并且智能感知开始扫描 400'ish 文件。看起来有些东西奏效了。我编译并得到了很多这样的行:1&gt;c:\users\...\documents\visual studio 2012\projects\qttest\qttest\main.cpp(5): error C2079: 'app' uses undefined class 'QApplication' 看起来它没有按预期工作。
    • 更新,我很傻。 QtGui 没有扩展,因此它不会显示在 Visual Studio 中。我包含它,所有的类都被突出显示并出现在智能感知中,但它们的方法似乎没有被定义,抛出类似上面的错误。
    【解决方案2】:

    我知道现在有点晚了,但你可以这样做:

    在 pro 文件中添加gui 模块和widgets

    QT += widgets core  gui
    

    并且通过替换包含文件,

    替换

    #include <QtGui/QWidget>
    #include <QtGui/QApplication>
    

    #include <QWidget>
    #include <QApplication>
    

    编译器应该能识别它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-03
      • 1970-01-01
      • 1970-01-01
      • 2019-03-21
      • 1970-01-01
      • 2022-11-29
      • 1970-01-01
      • 2016-07-26
      相关资源
      最近更新 更多