配置qtopia-free-2.1.1 桌面开发环境(qtopia系列文章-1)

QObject的setUserData和setProperty——Qt 前言 很多时候需要界面存储一些数据或信息,这样可以根据这些数据或信息来了解或获取点什么。可以说给界面增加一个标记,让我们更容易辨识。 我之前一直习惯给列表项QListWidgetItem或者树项QTreeWidgetItem携带一些数据,比如id,用setData来实现。所以这次就想QWidget有没有类似的方法,结果就找到了setUserData。后来在mac os中重新编译时,发现setUserData不可用了,建议用setProperty替换。 用法 我现在用的Qt的版本是Qt5.14 . 阅读详情

配置qtopia-free-2.1.1 桌面开发环境

 

 

这篇文章主要介绍了如何编译qtopia-free-2.1.1 ,以及运用QVFB搭建桌面开发环境。

 

 

编译qtopia-free-2.1.1

 

编译前准备!

qt-embedded-free-3.3.4.tar

qt-embedded-2.3.10-free.tar

qt-x11-2.3.2.tar

qtopia-free-source-2.1.1.tar

tmake-1.13.tar.gz

 

 

 

开始编译!

然后严格按照以下顺序编译

(参考资料:qtopia-free-2.1.1自带的文档中的Building Qtopia from Source 一章)

 

Build Qt 3.3 + tools
To build Qt 3.3 and the tools you must do the following:

·             cd $DQTDIR (这里漏掉一步,先设置export DQTDIR=$(QT3.3的目录路径))

·             export QTDIR=$DQTDIR

·             export PATH=$QTDIR/bin:$PATH

·             export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

·             echo yes | ./configure -fast -thread

·             make sub-src

·             cd tools/linguist/lrelease

·             make

·             cd ../lupdate

·             make

·             cd ../../designer/uilib

·             make

·             cd ../uic

·             Make

 

 

Build Qt 2.3.2
To build Qt 2.3.2 you must do the following:

·             cd $QT2DIR(这里漏掉一步,先设置export QT2DIR =$(QT2.3.2的目录路径))

·             export TMAKEPATH=$TMAKEDIR/lib/linux-g++

·             export QTDIR=$QT2DIR

·             export PATH=$QTDIR/bin:$PATH

·             export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

·             ./configure -no-xft

·             make

·             mkdir $QTEDIR/bin

·             cp bin/uic $QTEDIR/bin/

 

 

Build QVfb

(注:关于QVFB嵌入式的虚拟帧缓冲的介绍,看本文后面)
In this step we build and link the qvfb sources from Qt 2.3.10 against the static Qt library from Qt 2.3.2.

·             export TMAKEPATH=$TMAKEDIR/lib/linux-g++

·             export QTDIR=$QT2DIR

·             export PATH=$QTDIR/bin:$PATH

·             export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

·             cd $QTEDIR/tools/qvfb

·             tmake -o Makefile qvfb.pro

·             make

·             mv qvfb $QTEDIR/bin/

 

Build Qt/Embedded

If you are using the Qtopia Tools package then first

    export LD_LIBRARY_PATH=$QT2DIR/lib:$LD_LIBRARY_PATH

    cp $QT2DIR/bin/qvfb $QTEDIR/bin/

    cp $QT2DIR/bin/uic $QTEDIR/bin/

To build Qt/Embedded you must do the following:

    cd $QTEDIR

    export TMAKEPATH=$TMAKEDIR/lib/qws/linux-x86-g++

    export QTDIR=$QTEDIR

    export PATH=$QTDIR/bin:$PATH

    export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH

cp $QPEDIR/src/qt/qconfig-qpe.h src/tools/  

    ./configure -system-jpeg -no-xft -qconfig qpe -keypad-mode -qvfb -depths 4,8,16,32 [extra options: see below]

make sub-src

(注:这两步很关键

第一步的意思是把qtopia的配置信息拷贝到QT/Embedded因为根据实际应用的不同,QT/Embedded需要的功能也不同,所以qconfig-qpe.h实际上对于QT/Embedded来说,是一份裁减列表,告诉什么要裁减,什么不要裁减,具体的详细信息见qconfig-qpe.h里面有详细的英文注释。

第二步的参数-qconfig qpe的意思Qt/Embedded根据qconfig-qpe.h来进行裁减配置,并最后编译)

我的qconfig-qpe.h的内容如下:(就一行)

 

#define QT_NO_PROPERTIES    

 

我的意思就是(除了‘属性’这个特征以外,其他所有功能全部都需要)

属性-à Qt提供了一套和一些编译器提供商也提供的属性系统类似的完善的属性系统。

http://www.qiliang.net/qt/properties.html 中有对属性这个特征的的详细说明

 

 

Build Qtopia
To build Qtopia phone you must do the following:

·             cd $QPEDIR

·             export QTDIR=$QTEDIR

·             export PATH=$QPEDIR/bin:$PATH

·             ./configure -edition phone -no-qtopiadesktop

·             make

·             make install

To make the PDA version you must do the following:

    cd $QPEDIR

    export QTDIR=$QTEDIR                                             1

    export PATH=$QPEDIR/bin:$PATH                              2

    ./configure -edition pda -no-qtopiadesktop                  3

    make                                                                      4

    make install                                                             5

(注:我们这里只编译PDA版本,在第3步的时候加上参数-prefix 路径名 , 到第5步的时候就会自动安装到那个路径下)

 

 

 

至此,整个qtopia2.1.1编译成功!

 

 

编译完毕,执行程序!

 

执行程序时的环境变量

QPEDIR=/home/snail/devel/qt/environment/qtopia(我编译qtopia的时候,指定安装路径就是/home/snail/devel/qt/environment/qtopia)

QT2DIR=/home/snail/devel/qt/environment/qt-2.3.2

QTDIR=/home/snail/devel/qt/environment/qtopia

QTEDIR=/home/snail/devel/qt/environment/qt-2.3.10

QWS_DISPLAY=QVFb:0

 

 

执行程序

$QTEDIR/bin/qvfb -nocursor -width 800 -height 480 &

$QPEDIR/bin/qpe

 

最后效果图如下

 

 

 

 

 

 

 

 

 

Qt/嵌入式的虚拟帧缓冲

虚拟帧缓冲允许在你的桌面机器上开发Qt/嵌入式程序,而不用在命令台和X11之间来回切换。

The virtual framebuffer is located in $QTDIR/tools/qvfb.

使用虚拟帧缓冲

1.       确认$QTDIR/src/tools/qconfig.h中的QT_NO_QWS_VFB是没有被定义的,并且编译Qt/Embedded库。

2.       把qvfb作为一个普通的Qt/X11应用程序来编译并且运行它。不要把它作为一个Qt/嵌入式应用程序来编译。

3.       启动一个Qt/嵌入式主程序(比如,使用QApplication::GuiServer标志来构造一个QApplication或者在命令行下使用-qws参数)。你将会需要指定你所要使用虚拟帧缓冲驱动的服务器,例如:

4.           widgets -qws -display QVFb:0

   

5.       你也可以设置QWS_DISPLAY环境变量为QVFb:0。

(注:如果不设置QWS_DISPLAY环境变量为QVFb:0,在启动的时候也没有加上-qwsdisplay :id,则可能出现找不到QVFB的错误)

qvfb支持下列命令行参数:

  • -width width

虚拟帧缓冲的宽度(默认:240)。

  • -height height

虚拟帧缓冲的高度(默认:320)。

  • -depth depth

虚拟帧缓冲的色深(1、8或者32,默认:8)。

  • -nocursor

在帧缓冲窗口不显示X11光标。

  • -qwsdisplay :id

提供的Qt/嵌入式显示id(默认:0)。

(注:启动QVFB 时候后面加上&,这样QVFB就以后台程序运行,这样就可以在同一终端上继续运行qtopia程序~)

 

虚拟帧缓冲设计

虚拟帧缓冲使用了共享存储区域(虚拟的帧缓冲)来模拟帧缓冲并且在一个窗口中(qvfb)模拟一个应用来显示帧缓冲。显示的区域被周期性的改变和更新,所以你会看到帧缓冲的不连续的快照,而不是每一个单独的绘画操作。因为这个原因的绘画问题,比如闪烁,知道程序在使用真正的帧缓冲而运行的时候就不会再出现了。

(注:当在QVFB中运行程序时如果出现闪烁或延迟不代表在嵌入式设备中也会出现同样情况)

目标刷新速度可以通过View|Refresh Rate菜单项来设置。这将会倒置qvfb更加频繁地检查要被刷新的区域。速度仅仅是一个目标。如果一个小的绘画操作完成了,帧缓冲将不会在绘画事件之间显示任何更新。如果一个应用程序正在显示一个动画,更新将会更频繁,并且应用程序和qvfb将会争夺处理器时间。

鼠标和键盘事件通过命名管道传递给Qt/嵌入式主程序处理。

虚拟帧缓冲只是一个开发工具。在虚拟帧缓冲设计中没有考虑任何安全问题。在产品环境中应该避免这个问题,QT_NO_QWS_VFB在产品库中应该是被定义的。

(注: 虚拟帧缓冲只是一个开发工具。它的目的仅仅是让你可以方便的调试程序,不用在开发环境上和设备之间来回调试,所以在你还没有运行它之前,不要把它想的很复杂)

 

 

参考资料:

http://www.qiliang.net/qt/emb-qvfb.html

 

 

Arm-Linux嵌入式开发环境搭建:交叉编译+Qt+FL2440实战指南 Arm-Linux是嵌入式Linux开发的核心范式,其本质是通过交叉编译工具链在宿主机上生成可在ARM目标板运行的可执行程序。该技术依赖宿主-目标分离架构,关键在于工具链匹配、头文件与库的ABI一致性,以及运行时环境(如Framebuffer、QWS)的正确配置。其技术价值在于可控性强、资源占用低、贴近硬件,广泛应用于工业控制、教学平台和轻量级IoT设备。典型应用场景包括基于S3C2440等经典SoC的Qt嵌入式GUI开发、U-Boot/Linux/BusyBox系统构建及裸机调试闭环。本文以FL2440开 阅读详情

相关推荐

QT-任务管理器代码

任务管理器 曲线 内存 磁盘 版本代码参考

Qt MetaObject 详解之二:QMeta数据以及数据结构信息

如果一个类的声明中包含Q_OBJECT宏,那么qmake将为这个类生成 meta信息,这个信息在前一篇中所提到的moc文件中。这一篇通过解析这个一个示例moc文件来阐述这些meta信息的存储方式和格式;本篇先说明了一 下QMetaObject的数据结构,然后呈现了一个简单的类TestObject类及其生成的moc文件,最后对这个moc文件个内容进行了详细解释。 QMetaObject的数据定

qq_33663749的博客 4602

qtopia-free-src-2.2.0.tar.gz

qtopia-free-src-2.2.0.tar.gz 开源嵌入式qt的源代码

qtopia2.0桌面环境和qt4应用程序共存の法

开发板:友善之臂smart210(同样适用其他开发板) linux内核:linux3.0.8在arm开发板上开发目前只有qtopia2.0的桌面环境,因此进行其qt4程序的开发需要首先关闭掉qtopia,然后配置运行qt4环境配置脚本。对于想拥有和qtopia一样带图标的qt4应用程序貌似开发板还不支持,,,但是我想用啊啊啊啊。。并且还不能舍掉qtopia桌面环境,因为也需要,这就矛盾了 每次都要

程序緣的专栏 975

Qtopia2.2.0的环境搭建

自己搭建Qtopia2.2.0的笔记,很有借鉴价值; Qtopia2.2.0的环境搭建

qtopia-free

qtopia-free-2.2.0_jz2440.patch开源嵌入式qt的源代码补丁,适合jz2440开发板!

基于mini2440的qtopia程序设计之二:如何在qtopia创建快捷方式

      经过今天的验证,发现上一篇《基于mini2440的qtopia应用程序开发之一》中我以为的x86-qtopia和arm-qtopia两个目录的区别不是那么小。在arm-qtopia中我测试了简单的hello程序,改编了它的.pro文件、build文件、等,但是还是不能看到模拟出来在PC段运行的效果。后来又仔细看了x86-qtopia和arm-qtopia两个目录下的build文件,发现

hadise的专栏 4290

matlab tolx,Nelder-Mead算法matlab

Nelder-Mead算法适合变量数不是很多的方程求极值.原理:Nelder-Mead法是利用多面体来逐步逼近最佳点x*.设函数变量为n维,则在n维空间里多面体有(n+1)个顶点.设x1,x2,...,xn+1为多面体的顶点,且满足:f(x1)<=f(x2)<=...<=f(xn+1)Nelder-Mead法试着将多面体中最差的顶点xn+1(也就是函数的最大点)以新的最佳点替代,...

weixin_36485298的博客 1480

Ubuntu 8.04 安装 友善之臂 最新qtopia2.2.0代码

Ubuntu 8.04 安装 友善之臂 最新qtopia2.2.0代码2009-04-14 12:20本文是我在安装QT的时候的一点过程及经验总结,希望能给后来人一点启示。但是本人也是刚刚开始学习QT,所以有不正确的还请大虾们指出,我一定会认真改正的。谢谢。先让我抒发一下安装上qt的喜悦,哈哈。从开始看qt到成功的安装上qt,中间过了差不多6 7天吧,有3 4 5天是一

dongliqiang2006的专栏 1969

别再手动算临界转速了!用ANSYS Workbench 2023 R2快速搞定转子坎贝尔图(附完整APDL命令流)

本文详细介绍了如何利用ANSYS Workbench 2023 R2快速生成转子坎贝尔图,实现全自动临界转速分析。通过对比传统手动计算与Workbench自动化流程的效率差异,展示了其在旋转机械设计中的革命性优势,包括大幅缩短分析周期、提升精度至98.7%。文章还提供了完整的APDL命令流和实战案例,帮助工程师快速掌握这一高效工具。

weixin_42699679的博客 470

STM32与K210串口通信

这篇文章是为了填上一篇埋下的坑,k210和STM32通过串口通信,我是采用数据包的形式发送数据的,因为K210发送的数据有几种,采用数据包的形式发送比较安全。本文代码运行的平台是STM32F103C8T6和K210 Dock,只涉及到K210发送数据给STM32,stm32将接受到的数据显示到0.96寸OLED屏上。

qq_70715693的博客 3万+

TE2440工程师笔记之--交叉编译qtopia-free-2.2.0

我用的是飞凌公司的TE2 2440II的开发板,拿到开发板时就按照随光盘自带的是用户手册上的说明按部就班的进行操作,由于刚开始接触Linux和QT,编译qtopia-free-2.2.0走了很多弯路,竟然反复进行了N多次,费时1个多月,才将qtopia-free-2.2.0编译通过。    刚开始是完全按照手册上的一步一步的进行,但编译支持qtopia-free-2.2.0的库文件就遇到了很大的麻

.简简单单.; 1091

F28335 DSP ePWM模块实战:从基础配置到电机控制

本文详细解析了TI TMS320F28335 DSP的ePWM模块,从基础概念、寄存器配置到实战应用。通过代码示例,手把手教你如何配置定时中断、生成PWM波形、实现死区保护与故障联防,并最终完成一个可调速、可换向的直流电机控制项目,是掌握F28335电机控制核心技术的实战指南。

g5h6i的博客 1127

Qt Property System

Qt Property SystemQt Property System 示例代码 如同我在Qt 信号和槽所介绍的,在MOC code generator的帮助下,qt会产生精心组织的代码将名称和位置联系在一起,知道了对象、名称,就能找出相应的位置,进而调用相应的函数。test_1:#include "propertysystem.h" #include <QVariant>void test_1(

unclerunning的博客 665

TIA西门子博途V19安装教程及注意事项

TIA西门子博途V19安装教程及注意事项

Robot_PLC_HMI_Automation 1万+

[网络安全提高篇] 一一九.恶意软件动态分析经典沙箱Cape的安装和基础用法详解

这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步。前文详细介绍恶意代码静态分析经典工具Capa的基础用法,以及批量提取静态特征和ATT&CK技战术,主要是从提取的静态特征Json文件中提取关键特征。这篇文章将详细讲解动态分析沙箱Cape,其是一个开源的自动恶意软件分析系统,通过自动运行和分析恶意软件,全面分析和提取恶意软件的关键特征。本文先介绍Cape沙箱的安装和基础用法,后续随着深入再分享。基础性文章,希望对您有帮助!

杨秀璋的专栏 1万+

ARM---qtopia系统环境搭建

官网下载 https://www.qt.io/download   qt-opensource-linux-x64-5.11.1.run --- 软件包更大些,其中包括软件运行库和图形化界面开发工具 qt-creator-opensource-linux-x64-3.2.2.run 下载好的.run文件需要先添加执行权限,chmod +x  xx.run 然后才能正常安装   新建...

嚜嚜的博客 1035

Android oom_adj 更新原理(一)

通过之前的两篇博文《lmkd 机制详解》和《lmkd中adj score的算法剖析》中,根据计算出来的 min_score_adj 选择大于该值的 oom_adj 的进程进行 kill 处理。oom_adj 随着应用状态的不同其值也是伴随着变化的。本文将通过源码剖析 oom_adj 更新的原理。

私房菜 2652

Qtopia2.1.1 在2410-S 上的移植

<br />1.实验可以分为以下几个步骤进行:<br />(1) 在装有linux 的pc 机上安装交叉编译环境。<br />安装光盘时所安装的编译器版本较低,不能正常编译QT 程序,所以编译前需要安装<br />Qt/tools/arm-linux-gcc-3.4.1.tar.bz2,并在/root/.bash_profile 中修改编译器搜索路径。<br />(2) 编译库文件:<br />(3) 编译qt-x11-2.3.2:<br />(4) 编译安装qt-embedded-2.3.2<br />(

dqmengxiang的专栏 461

【优化求解】基于matlab粒子群算法PSO确定最佳开关角对称级联多层逆变器【含Matlab源码 13080期】

粒子群算法PSO确定最佳开关角对称级联多层逆变器 完整代码,包运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 97

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Qt的属性Properties例子代码

#ifndef MYCLASS_H//myclass.h#define MYCLASS_H#include class MyClass : public QObject{    Q_OBJECT    Q_PROPERTY( Priority priority READ priority WRITE setPriority )    Q_ENUMS( Priority )        publi

向远处看的专栏 2135

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

QTopia2.1触摸屏输入法的制作

英文输入法界面效果图 中文输入法界面效果图  1 界面布局关键:留意管理器QGridLayout类的使用!  ---主界面的布局GeoImDialog::GeoImDialog(QWidget *parent, const char *na

飞羽飞の猪の博客 9911

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

第一次使用QT4的Qt Style Sheets功能

我需要一个将Qt4中QPushButton按钮在获得焦点时背景色高亮的功能,如果要写代码很麻烦:) 使用Qt Sytle Sheets的功能后代码变的非常简单和干净:) 我是这样使用的 setStyleSheet("QPushButton:focus{background-color: red;}"); 就会有按钮获得焦点高亮的作用   获得焦点时按钮红色高亮:) 由此体会到Qt4的Qt Style Sheets的功能的强大:)边学习边做些笔记以供还没有使用这个功能但又想方便的制定UI的朋友:)

飞羽飞の猪の博客 4019
上一篇: CSS常用技巧
下一篇: gcc常用参数详解
飞羽飞之猪
博客等级 码龄21年 127粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值