なにかする。

手を動かした履歴or日記

Qt5でhello

前回、ターミナルからqtcreatorの起動までやった。
けど、そこから先がわからなくてQt本買ってみた。

www.oreilly.co.jp

1.helloがしたい

目標:タイトルバーに"hello"と出して"終了"ボタンで終了するアプリケーション。

まずは"hello"と言う名前のディレクトリを作って、中に"main.cpp"を作る。

$ mkdir hello
$ cd hello
$ touch main.cpp

作ったmain.cppの中身を本を参考に書く。

//main.cpp
#include<QApplication>
#include<QLabel>
#include<QPushButton>

int main(int argc, char *argv[])
{
  QApplicationapp(argc, argv);
  QLabel *label = newQLabel("hello");
  QPushButton *button = newQPushButton("終了");

  QObject::connect(button, SIGNAL(clicked()), &app, SLOT(quit()));

  label->show();
  button->show();

  return app.exec();
}

2.qmakeが通らない

hello内にプロジェクトを作ろうとした。

$ qmake --project 

すると

qmake: could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qmake': No such file or directory

とそんなものないと怒られた。

3.プロジェクトファイルを作れるようにする

必要なパッケージが無いようなので入れる。

$ sudo apt install -y qt5-qmake qt5-default

パッケージを導入してからqmake --project すると、hello.proが無事できた。

4.makeが通らない

プロジェクトファイルが無事できたので、Makefileを作る。

$ qmake hello.pro

これでMakefileができるのでmakeする。

$ make

すると

main.cpp:1:23: fatal error: QApplication: そのようなファイルやディレクトリはありません

とまたもやそんなものないと怒られた。

4.makeできるようにする

参考にした本はQt4。使おうとしている環境はQt5。
という事でQt5向けに変更する。

//main.cpp
#include<QtWidgets/QApplication>  //Qt4では#include<QApplication> 

ただ、このままビルドしても

main.cpp:2:17: fatal error: QLabel: そのようなファイルやディレクトリはありません

とさっきとは異なるものが無いと怒られる。
なので今度はプロジェクトファイルもQt5向けにも変更する。

//hello.pro
QT+=widgets  //これをプロジェクトファイルの末尾に追記

これでようやっとmakeが通った。

5.helloする

makeすると"hello"と言う実行ファイルができるので、実行する。

$ ./hello

"hello"が見つからない。
f:id:iketta11hkd:20180121023805p:plain

と思ったが、ウィンドウを右に伸ばしたら無事出てきた。
f:id:iketta11hkd:20180121023807p:plain

ということで、おしまい。