qmake不添加小部件

时间:2014-05-17 12:54:16

标签: c++ qt qt5 qmake qtwidgets

我有一个简单的程序。我的计划是:

 #include <QApplication>
 #include <QLabel>

 int main(int argc, char *argv[])
{
 int rc ; 
    QApplication app(argc, argv);  
     QLabel *label = new QLabel("Hello Qt!");
    label->show();
     rc = app.exec();
     return(rc) ;
}

我想在命令行中编译和构建此代码。 我已经安装了qt和mingw。

首先我的命令是:

  qmake -project

然后我发出这个命令。

  qmake

然后qmake创建.pro文件:

 TEMPLATE = app
 TARGET = HELLO
 INCLUDEPATH += .

 # Input
 SOURCES += hello.cpp

我认为这个文件必须包括'QT + =小部件',但它没有。我不知道为什么。 最后,我打电话给mingw make

它会出错。

当我添加.pro文件QT + =小部件然后调用mingw-make时,它可以工作并创建.exe文件。

然后我的问题是,为什么qmake会自动添加QT += widgets,我该怎么做?我不想手动添加。

2 个答案:

答案 0 :(得分:3)

  

我该怎么做?我不想手动添加。

您可以执行以下操作:

1)您可以使用QtCreator并选择基于小部件的应用程序。

2)qmake -project&#34; QT + =小部件&#34;

但仅此而已。 QMake不是C ++代码项目解析器。

另外,请注意,如果这对您很重要,可以使用greaterThan(QT_MAJOR_VERSION, 4):QT+=widgets与Qt 4兼容,因为小部件位于Qt 4的gui模块中,默认情况下会添加core和gui。在Qt 5中,它们被放入了自己的小部件模块中。

答案 1 :(得分:0)

如果你是一个linux用户,你可以制作一个像这样的小bash脚本

#!/bin/bash
if [ "$1" == "-project" ]; then
 qmake $@ "QT += widgets gui"
else  
 qmake $@
fi

(在lpapp的第2点之后)并将其放在/ usr / bin目录中..如果需要,可以将qmake重命名为qmake_old,将脚本重命名为&#34; qmake&#34;然后

#!/bin/bash
if [ "$1" == "-project" ]; then
 qmake_old $@ "QT += widgets gui"
else
 qmake_old $@
fi

因此您通常可以调用qmake广告,它会自动执行您想要的操作 (NB不要忘记chmod + x) 在ubuntu 14.04上测试