QtCreator使用

    完成了tslib和QT的编译后,就成功搭建了Qt环境,接下来就可以使用QtCreator来开发图形界面了\~

    QtCreator安装

    wget http://download.qt.io/official_releases/qtcreator/4.4/4.4.1/qt-creator-opensource-linux-x86_64-4.4.1.run
    

    下载好后,在图形界面里双击运行即可。

    注意,由于docker开图形界面比较麻烦,所以qtcreator不包含在docker镜像中,大家可以自行下载到本机安装。

    QtCreator配置

    打开qtcreator,打开 Tools --> option --> Build&Run

    首先配置Qt版本,这里需要用到前面编译好的qmake,点击add,把前面编译好的qmake指给它

    然后配置工具链,把我们使用的linaro工具链指给它

    最后配置 构建套件(Kit),就是组合Qt版本和工具链版本,我们这里新建 arm v7套件。

    保存应用退出即可。

    QtCreator的简单使用

    新建工程,一路默认下去(选择arm v7套件),完成。

    随便拉些控件:

    然后点左下角运行按键就会自动构建,在工程目录下生成对应二进制文件。

    把生成的程序拷贝到目标板上,运行:

    root@LicheePi:~# ./test 
    ./test: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by ./test)
    ./test: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /opt/qt5.9.1-arm/lib/libQt5Widgets.so.5)
    ./test: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /opt/qt5.9.1-arm/lib/libQt5Gui.so.5)
    ./test: /usr/lib/arm-linux-gnueabihf/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /opt/qt5.9.1-arm/lib/libQt5Core.so.5)
    

    检查现有的libstdc++:

    root@LicheePi:~# strings /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 | grep CXXA 
    CXXABI_1.3
    CXXABI_1.3.1
    CXXABI_1.3.2
    CXXABI_1.3.3
    CXXABI_1.3.4
    CXXABI_1.3.5
    CXXABI_1.3.6
    CXXABI_1.3.7
    CXXABI_1.3.8
    CXXABI_TM_1
    CXXABI_ARM_1.3.3
    

    说明系统里的libstdc++6使用了较老的编译器,导致test程序里链接后,无法正常使用库中的函数。

    于是从linaro的 arm-linux-gnueabihf/lib 下拷出新的
    libstdc++.so.6.0.22 覆盖即可。

    再次运行,会发现界面上没有文字,终端提示没有字体。

    于是下载任意字体,如simsun.ttf,放到 /opt/qt5.9.1-arm/lib/fonts
    下,再重新运行,就有字体显示了。

    此时会发现无法触摸,于是运行下触摸校准程序:

    ts_calibrate
    ts_test
    

    校准,测试通过后,再次运行,即可触摸控制了。

    但此时会看到终端光标在左下角闪烁,而且有时候内核信息会覆盖图像,所以:

    禁止printk,隐藏光标。

    echo 0 > /proc/sys/kernel/printk
    echo -e "\033[?25l" > /dev/tty0