外部ライブラリをQtに取り込むには

How to import native libraries on Qt
QtはC++がベースの開発環境であり、また、基本的にプラットフォーム標準のコンパイラ(WindowsならMSVC、Androidならgcc)でアプリを生成するため、ラッパーコードなどを必要とせず、C言語ライブラリーをそのままプログラムに取り入れることができます。

これらはQtプロジェクトファイル(.pro)で定義することになります。「$$」はqmakeマクロを意味しています。この場合であれば、プロジェクトファイルのあるディレクトリの「opencv」フォルダーがインクルードフォルダーに追加されます。
INCLUDEPATH += $$_PRO_FILE_PWD_/opencv/
Cプリプロセッサを定義するには「DEFINES」に文字列を追加します。
DEFINES += PARAM_SINGLE_ONLY
ライブラリーディレクトリを定義するには「LIBS」を記入します。ただし、記述方法はコンパイラに依存するため、プラットフォームごとにパラメータを変更しなくてはいけません。
LIB_DIR = $$_PRO_FILE_PWD_/libav/$${QMAKE_HOST.os}/$${QMAKE_HOST.arch} android{ LIBS += -L"$$LIB_DIR" -lavformat-57 } winrt{ LIBS += "$$LIB_DIR\avformat.lib" }

以上を踏まえて、GPIOコントローラーライブラリ「wiringPi」使ってRaspberry Piで動作するQtアプリでLチカを試してみましょう。新規プロジェクトを作成したら、「LIBS += -lwiringPi」の一文を追加します。
main.qmlファイルにボタンを追加し、ボタンを押したり離したりした際にシグナルを発生させます。
main.qml
import QtQuick 2.9
import QtQuick.Controls 2.0

Item {
    signal ledOn()
    signal ledOff()
    Button{
        text:"LED"
        onPressed: ledOn()
        onReleased: ledOff()
    }
}
wiringPiのQtでの使い方は、コンソールアプリにおけるC言語プログラミングと全く同じです。
mainview.h
#ifndef MAINVIEW_H
#define MAINVIEW_H

#include <QQuickView>

class MainView : public QQuickView
{
    Q_OBJECT
public:
    MainView();
public slots:
    void onLedOn();
    void onLedOff();
};

#endif
mainview.cpp
#include "mainview.h"
#include "wiringPi.h"

#include <QQuickItem>

#define GPIO_LED 17

MainView::MainView()
{
    setResizeMode(QQuickView::SizeRootObjectToView);
    setSource(QUrl("qrc:/main.qml"));

    QObject *root = this->rootObject();
    connect(root, SIGNAL(ledOn()), this, SLOT(onLedOn()));
    connect(root, SIGNAL(ledOff()), this, SLOT(onLedOff()));

    wiringPiSetupGpio();
    pinMode(GPIO_LED, OUTPUT);
}

void MainView::onLedOn()
{
    digitalWrite(GPIO_LED, 1);
}

void MainView::onLedOff()
{
    digitalWrite(GPIO_LED, 0);
}
このプログラム例では、Qtアプリに表示されたボタンを押すと、GPIO17がオンに、離すとオフになります。
2018/11/10