C++
Qt
OpenCV
アプリ

Qt + OpenCVまとめ

Qt + OpenCVでアプリを作る際の注意点をまとめました.

コンパイル手順

qmake -project
qmake
make

バージョン確認

qmake -v

バージョン変更方法

qmakeのバージョンが4になっていて,qt5から導入された文法で書かれたプログラムを実行する場合コンパイルエラーとなる場合がある.僕の場合,

connect(sender, &QObject::destroyed, this, &MyObject::objectDestroyed);

でエラー.(qt4では

connect(sender, SIGNAL(destroyed()), this, SLOT(objectDestroyed()));

と書かないといけない)

QT_SELECT=qt5 qmake --versionを実行してバージョン情報が表示される場合はQt5がすでにインストールされているので,デフォルトのバージョンを切り替える必要がある.

vim /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf

/usr/lib/x86_64-linux-gnu/qt4/bin

の行を

/usr/lib/x86_64-linux-gnu/qt5/bin

と変更することでデフォルトのバージョンを変更できる.

include に関する設定

#include <***>に関する設定は(project名).proの末尾に追記する

QApplicationクラスの利用

QT += widgets

を追記

c++11コンパイラの利用

QMAKE_CXXFLAGS += -std=c++11

を追記

OpenCVの利用

QT_CONFIG -= no-pkg-config
CONFIG  += link_pkgconfig
PKGCONFIG += opencv

を追記

またMacの場合実行ファイルは
(プロジェクト名).app/Contents/MacOS/(プロジェクト名)
に作られるため注意

実装上のハマりポイント

class MainWindow : public QWidget
{
    Q_OBJECT
public:
    MainWindow()
//......
public slots:
    setImage(); //ボタンが押された時のslot関数

}

Q_OBJECTを書かないとSLOT関数が認識されない

参考

Qt公式ドキュメント
Qt関連資料
Qtプログラミング入門 densanlabs