Hello Qt

2019年5月7日
Qt
$ mkdir hello
$ cd hello
$ vi hello.cpp
#include <QApplication>
#include <QLabel>

int main(int argc, char *argv[])
{
  QApplication app(argc, argv);
  QLabel *label = new QLabel("Hello Qt!");
  label->show();
  return app.exec();
}
$ ls
./  ../  hello.cpp
$ qmake -project
$ ls
./  ../  hello.cpp  hello.pro
$ vi hello.pro

 hello.proの最終行に「QT += widgets」を追加する必要がある。「qmake hello.pro」コマンドを実行してMakefileを作成し、makeコマンドでビルドして実行ファイルを生成するが以下のようなエラーが発生してしまう。

$ make
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_CORE_LIB -I. -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -isystem /usr/include/libdrm -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o hello.o hello.cpp
hello.cpp:1:10: fatal error: QApplication: そのようなファイルやディレクトリはありません
#include &lt;QApplication&gt;
^~~~~~~~~~~~~~
compilation terminated.
make: *** [Makefile:364: hello.o] エラー 1
######################################################################
# Automatically generated by qmake (3.1) Tue May 7 21:07:53 2019
######################################################################

TEMPLATE = app
TARGET = hello
INCLUDEPATH += .

# The following define makes your compiler warn you if you use any
# feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

# Input
SOURCES += hello.cpp
QT += widgets

 qmake hello.proコマンドを実行してMakefileを作成し、makeコマンドでビルドして実行ファイルhelloを生成し、このファイルを実行する。

$ ls
./  ../  hello.cpp  hello.pro
$ qmake hello.pro
$ ls
./  ../  Makefile  hello.cpp  hello.pro
$ make
g++ -c -pipe -O2 -Wall -W -D_REENTRANT -fPIC -DQT_DEPRECATED_WARNINGS -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I. -I. -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -I. -isystem /usr/include/libdrm -I/usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++ -o hello.o hello.cpp
g++ -Wl,-O1 -o hello hello.o   -lQt5Widgets -lQt5Gui -lQt5Core /usr/lib/x86_64-linux-gnu/libGL.so -lpthread
$ ls
./  ../  Makefile  hello*  hello.cpp  hello.o  hello.pro
$ ./hello