测试平台

宿主机平台:Ubuntu 12.04.4 LTS

目标机:Easy-ARM IMX283

目标机内核:Linux 2.6.35.3

QT版本:Qt-4.7.3

Tslib版本:tslib-1.0.0

QT使用小结

整个测试均放在上节制作的文件系统,通NFS根文件系统来进行测试

1.tslib编译

编译与安装

  1. ./autogen.sh
  2. ./configure --prefix=$(pwd)/install --host=arm-linux ac_cv_func_malloc_0_nonnull=yes CC=arm-none-linux-gnueabi-gcc
  3. make
  4. make install

将安装文件拷贝到 /home/vmuser/workspace/vm_tools/tslib

修改 tslib/etc/ts.conf

2.qt-4.7.3源码编译

编译与安装

  1. ./configure -prefix /home/vmuser/workspace/vm_tools/qt-4.7.3-arm -opensource -confirm-license -release -shared -embedded arm -xplatform qws/linux-arm-gnueabi-g++ -depths 16,18,24,32 -fast -lrt -little-endian -optimized-qmake -pch -qt-sql-sqlite -qt-zlib -qt-libjpeg -qt-libpng -qt-freetype -no-largefile -no-accessibility -no-qt3support -no-webkit -no-mmx -no-3dnow -no-sse -no-sse2 -no-glib -no-libtiff -no-libmng -no-openssl -nomake examples -nomake docs -nomake demos -no-separate-debug-info -no-qvfb -no-cups -no-gtkstyle -no-xrender -no-glib -qt-mouse-pc -qt-mouse-linuxtp -qt-mouse-tslib -qt-mouse-linuxinput -qt-kbd-linuxinput -qt-gfx-linuxfb -qt-gfx-transformed -D QT_QWS_CLIENTBLIT -I /home/vmuser/workspace/vm_tools/tslib/include -L /home/vmuser/workspace/vm_tools/tslib/lib
  1. 修改 qt-everywhere-opensource-src-4.7.3/mkspecs/qws/linux-arm-gnueabi-g++/qmake.conf 文件

然后 编译、安装

make

make install

添加 qmake-arm 变量别名,便于以后编译程序移植

  1. vi ~/.bashrc
    文件末尾添加:
  1. alias qmake-arm=/home/vmuser/workspace/vm_tools/qt-4.7.3-arm/bin/qmake

3. 移植tslib和qt的库

1. 拷贝库文件到文件系统

/home/vmuser/workspace/vm_tools/tslib

/home/vmuser/workspace/vm_tools/qt-4.7.3-arm

到 /home/vmuser/workspace/myrootfs/usr/local

2. 修改启动初始化脚本,配置 qt 运行环境

修改 myrootfs/etc/profile

  1. export TSLIB_ROOT=/usr/local/tslib
  2. export TSLIB_TSDEVICE=/dev/input/event0
  3. export TSLIB_CALIBFILE=/etc/pointercal
  4. export TSLIB_CONFFILE=$TSLIB_ROOT/etc/ts.conf
  5. export TSLIB_PLUGINDIR=$TSLIB_ROOT/lib/ts
  6. export TSLIB_FBDEVICE=/dev/fb0
  7. export QWS_MOUSE_PROTO=tslib:/dev/input/event0
  8. export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TSLIB_ROOT/lib
  9.  
  10. export QTDIR=/usr/local/qt-4.7.3
  11. export LD_LIBRARY_PATH=$QTDIR/lib:$QTDIR/plugins/imageformats:$LD_LIBRARY_PATH
  12. export QT_PLUGIN_PATH=$QTDIR/plugins
  13. export QT_QWS_FONTDIR=$QTDIR/lib/fonts

要同时支持鼠标时添加

export QWS_MOUSE_PROTO="tslib:/dev/input/event0 MouseMan:/dev/input/mouse0"

4. NFS跟文件系统启动测试

新建 home 文件夹,将QT交叉编译后的程序拷贝到 home

进入uboot 设置NFS启动参数

  1. setenv bootargs 'root=/dev/nfs rw console=ttyAM0,115200n8 nfsroot=192.168.1.123:/home/vmuser/workspace/myrootfs ip=192.168.1.124:192.168.1.123:192.168.1.254:255.255.255.0:epc.zlgmcu.com:eth0:off mem=64M'
  2.  
  3. saveenv

然后 reset 开机从 myrootfs 启动

QT编程实例1: 图片显示

ui 界面设置如下,使用水平、垂直布局工具对齐

showpic.cpp代码如下:

  1. #include "showpic.h"
  2. #include "ui_showpic.h"
  3.  
  4. showpic::showpic(QWidget *parent) :
  5. QWidget(parent),
  6. ui(new Ui::showpic)
  7. {
  8. ui->setupUi(this);
  9.  
  10. QPixmap pix = QPixmap("/home/picture/bk1.jpg");
  11. pix.scaledToHeight(200);
  12. pix.scaledToWidth(300);
  13. ui->labelPic->setPixmap(pix);
  14. ui->label->setText("123456");
  15. }
  16.  
  17. showpic::~showpic()
  18. {
  19. delete ui;
  20. }
  21.  
  22. void showpic::on_pBtnShow_clicked()
  23. {
  24. QPixmap pix = QPixmap("/home/picture/bk1.jpg");
  25. pix.scaledToHeight(200);
  26. pix.scaledToWidth(300);
  27.  
  28. ui->labelPic->setPixmap(pix);
  29.  
  30. ui->label->setText("123456");
  31. }
  32.  
  33. void showpic::on_pBtnHide_clicked()
  34. {
  35. ui->labelPic->clear();
  36. ui->label->setText("hello,world...");
  37. }

main.cpp

  1. #include <QtGui/QApplication>
  2. #include "showpic.h"
  3. #include <QTextCodec> //中文编码支持头文件
  4. #include <QtGui/QLabel>
  5. #include "ui_showpic.h" //ui头文件
  6. //using namespace Ui;
  7.  
  8. int main(int argc, char *argv[])
  9. {
  10. QApplication a(argc, argv);
  11. QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
  12.  
  13. showpic *window = new showpic;
  14.  
  15. // window->resize(pix.height(), pix.width());
  16. window->setWindowTitle("图片");
  17. window->show();
  18. // window->showFullScreen(); //全屏显示
  19.  
  20. return a.exec();
  21. }

QT开发实战一:图片显示的更多相关文章

  1. 微信小程序开发——base64位图片显示问题

    前言: 目前小程序项目需要后端借口提供验证码图片,后端是以base64位返回的,按照H5的做法,前边拼上 data:image/png;base64, 应该就可以了,关键代码如下: H5: <i ...

  2. Qt添加窗口背景图片、Label图片显示、、Label文字显示

    一.添加窗口背景图片 重写MainWindow绘制事件 void MainWindow::paintEvent(QPaintEvent *event) { QPainter painter(this) ...

  3. 在VC6中基于dll开发插件用于各种图片显示(BMP/TGA/JPG/GIF/PNG/TIF/ICO/WMF/EMF/...)

    一.图片显示 图片显示的方法: 1.  直接写程序 2.  第3方库 3.  调用COM组件的IPicture接口 4.  使用MFC的CPictureHolder类 5.  使用GDI+的CImag ...

  4. 图解android开发在界面上显示图片

    图解android开发在界面上显示图片<申明:转自百度> <原文章地址:http://jingyan.baidu.com/article/49711c6153a277fa441b7c ...

  5. [转]使用QT开发GoogleMap瓦片显示和下载工具

    第一节 之前做项目的时候经常遇到需要大量地图背景数据,然后没有数据被逼着去Google上下载瓦片数据在拼接成整张影像的工作,其实遥感影像晚上有很多可以下载到的,但是大部分是作为研究用的,作为GIS的背 ...

  6. 使用 Qt 获取 UDP 数据并显示成图片(2)

    本文首发于 BriFuture 的 个人博客 在我的前一篇文章 使用 Qt 获取 UDP 数据并显示成图片 中,我讲了如何用 Python 模拟发送数据,如何在 Qt 中高效的接收 UDP 数据包并将 ...

  7. OpenCV【2】---读取png图片显示到QT label上的问题

    问题一:   操作图片test.png是一个365x365的PNG图片   通过OpenCV自带的GUI显示出来图像是没问题的,例如以下操作代码所看到的: QStringfileName=QFileD ...

  8. 【Qt开发】【ARM-Linux开发】 QT在ARM上显示字体的问题

    在PC机上利用QT开发的应用程序在设置字体时,在PC上运行,可根据自己的设置,字体随之变大或变小.而移植到ARM上运行时发现,显示字体与所设置的字体不用,字体普遍偏小.经过上网搜索发现,是环境变量字库 ...

  9. 【Qt开发】解决Qt5.7.0中文显示乱码的问题

    [Qt开发]解决Qt5.7.0中文显示乱码的问题 亲测可用: 乱码主要是编码格式的问题,这里可以通过Edit菜单中选择当前文档的编码方式,选择按照UTF-8格式保存,然后输入对应的中文,保存,然后运行 ...

随机推荐

  1. 【Azure 应用服务】App Service 运行状况健康检查功能简介 (Health check)

    通过Azure App Service门户,启用Health Check来监视应用服务的实例,当发现其中一个实例处于不健康(unhealthy)状态时,通过重新路由(即把有问题的实例从负载均衡器中移除 ...

  2. AuthorizationFailed""The client '***' with object id '***' does not have authorization to perform action 'or the scope is invalid. If access was recently granted, please refresh your credentials

    Warning  SyncLoadBalancerFailed  4m9s (x11 over 29m)   service-controller  Error syncing load balanc ...

  3. 利用MySQL原数据信息批量转换指定库数据表生成Hive建表语句

    1.写出文件工具类 package ccc.utile; import java.io.*; /** * @author ccc * @version 1.0.0 * @ClassName Write ...

  4. docker容器网络bridge

    我们知道docker利用linux内核特性namespace实现了网络的隔离,让每个容器都处于自己的小世界里面,当这个小世界需要与外界(宿主机或其他容器)通信的时候docker的网络就发挥作用了,这篇 ...

  5. Vue 实现微信提示浏览器转跳功能

    <template> <div class="main"> <div :class="show==true ? 'block':'block ...

  6. SpringMVC学习08(拦截器)

    8.拦截器 概述 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理.开发者可以自己定义一些拦截器来实现特定的功能. 过滤器与拦截器的区别: ...

  7. MySQL-01-简介以及安装

    Mysql简介 什么是数据 数据:文字.图片.视频... 人类认知的数据表现方式 计算机:二进制.16进制的机器语言 基于数据的重要性和复杂性的不同,我们可能有不同的管理方式 哪些数据是适合存储到数据 ...

  8. 【笔记】求数据前n个主成分以及对高维数据映射为低维数据

    求数据前n个主成分并进行高维数据映射为低维数据的操作 求数据前n个主成分 先前的将多个样本映射到一个轴上以求使其降维的操作,其中的样本点本身是二维的样本点,将其映射到新的轴上以后,还不是一维的数据,对 ...

  9. Nmap 常用命令及抓包分析

    1.主机发现:主机发现也称为ping扫描,但是Nmap中主机发现的技术已经不是简单的采用ping工具发送简单的ICMP回声请求报文.用户完全可以通过使用列表扫描(-sL)或者通过关闭ping(-P0) ...

  10. spring boot 整合JPA bean注入失败

    有时候报的错误让你匪夷所思,找错误得学会找根.源头在哪里? 比如:我们刚开始看的错误就是 org.springframework.beans.factory.UnsatisfiedDependency ...