先创建一个QWidget对象。
1、在Qt程序中创建一个QWidget对象,并调用其show()函数以显示窗口。
2、调用QWidget对象的winId()函数获取窗口句柄(即窗口ID号)。
3、使用XOpenDisplay()函数打开与XServer的连接。
4、使用XCreateSimpleWindow()函数创建一个XWindow,并设置其属性和事件响应函数等。
5、使用XMapWindow()函数将新创建的窗口映射到屏幕上。
6、使用XFlush()函数刷新缓冲区并发送请求给XServer。
、前言
本文介绍一种Qt下进行ROS开发的完美方案,使用的是ros-industrial的Levi-Armstrong在2015年12月开发的一个Qt插件ros_qtc_plugin,这个插件使得Qt“新建项目”和“新建文件”选项中出现ROS的相关选项,让我们可以直接在Qt下创建、编译、调试ROS项目,也可以直接在Qt项目中添加ROS的package、urdf、launch,感谢Levi-Armstrong。目前这个插件还在不断完善,有问题或者其他功能建议可以在ros_qtc_plugin的项目主页的讨论区提出。
本文是用的 *** 作系统是ubuntu kylin 1404中文版,ROS版本是indigo,Qt版本是Qt551(Qt Creator 403)
本文地址:>
一般使用Qt (C++)或者 GTK+(C)的库;
1.比如Qt,安装Qt库以及Qt Creator,在Qt Creator中编译以下程序
1
2
3
4
5
6
7
8
9
10
11
12
#include <QApplication>
#include <QMainWindow>
int main(int argc, char argv[])
{
QApplication a(argc, argv);
QMainWindow w = new QMainWindow();
asetActiveWindow(w);
w->show();
return aexec();
}
1、首先,开发多个Qt应用程序,每个应用程序都有独立的UI界面和业务逻辑。
2、在系统启动时,启动器程序会运行,启动器程序是一个Qt应用程序,它的主要功能是控制其他应用程序的启动和关闭。
3、启动器程序需要在主窗口中显示多个按钮或菜单项,每个按钮或菜单项代表一个应用程序。
4、当用户点击一个按钮或菜单项时,启动器程序会启动对应的应用程序,并将应用程序的窗口显示在主窗口中,用户可以在主窗口中切换不同的应用程序。
5、当用户关闭一个应用程序时,启动器程序会将该应用程序的窗口关闭,并释放对应的资源。
1、想板运行用QT编程序必须要PClinux系统用QT编
需要必须经交叉编译 (window 进行交叉编译)
2、windows系统编QT程序经交叉编译能直接运行板板需要弄QT环境啥往面安相同版本QT
必须要保证板已经移植功QTE编译程序才跑板
(关于何移植QTE问题新手one month,good luck to you) 交叉编译候用QTE库普通QT库且库版本编译工具链必须板致
在ubuntu下安装Qt开发环境步骤如下:1、下载Qt Framework。进入官方页面,选择中间的标签LGPL,然后下载Qt libraries 470 for linux/x11(199MB)。
2、解压文件。进到存放下载文件的目录下执行tar -zxvf qt-everywhere-opensource-src-470targz
其中qt-everywhere-opensource-src-470targz是刚下载文件的文件名
3、执行sudo apt-get install libx11-dev libfreetype6-dev libavahi-gobject-dev libSM-dev libXrender-dev libfontconfig-dev libXext-dev
4、把解压后的文件夹拷贝到英文目录(非tmp)下,进入该文件夹执行/configure,然后选择o(开源),接着选择yes(同意)。运行结束后提示Just run 'make'等信息后表示这步成功了。
5、安装qt。执行sudo make install,这步较快,文件安装在/usr/local/Trolltech/Qt-470
设置环境变量。执行vi ~/bashrc 添加如下内容:
QTDIR=/usr/local/Trolltech/Qt-470/
PATH=$QTDIR/bin:$PATH
MANPATH=$QTDIR/doc/man:$MANPATH
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QTDIR PATH MANPATH LD_LIBRARY_PATH
之后重启。如果不会用vi可以执行vi语句后输入:$回车,然后输入o进入输入模式,将上面的字段拷贝后按esc,然后输入大写的ZZ即可。
6、接下来就可以按照
qmake -project
qmake
make
的步骤执行qt程序了。
如何安装opencv请参考百度经验:>
ACE全称adaptive communication enviroment,是一套C++的通信库。它提供了socket/threading/memory management等多种系统调用的面对对象的wrapper,使C++通信软件开发更加简单。
ACE最帅的特点:跨平台!!!!!!ACE屏蔽了底层平台特定的语义,使用ACE编写的C++程序,可以在linux/windows/HP-Unix下编译执行,而且效率很高。曾经做过的一个VOIP项目就是用ACE写的,那个项目的技术相当复杂,需要用到socket/multi-threading等很多与 *** 作系统联系紧密的技术,但用了ACE(界面用Qt)后,那个项目源码可以直接在linux和windows下编译运行,呵呵,还是相当成功的。项目进行中感到ACE相当成熟,举一个朋友说Siemens的某些大型工程也是用的ACE。而且,ACE是免费开源的软件包--不用白不用。
C++ Network Programming就是ACE项目的负责人Schmidt写的,这位老哥以前是华盛顿大学的副教授,主要研究领域是软件工程(他写了不少关于pattern的文章和书),现在猫到UC Irvine去了,好象还是副教授(要这哥们在中国,早应该成教授了吧)。这两本书主要介绍了ACE的使用,也涉及了部份设计方面的内容。第一卷主要介绍ACE的基本功能和使用,第二卷则偏重通讯软件中的design pattern。搞通信软件开发的兄弟们绝对应该看看此书。
另外也有人推荐把ACE作为学习C++的范例来学习,呵呵,这就是个人喜好的问题了总的来说ACE的代码风格还是很不错的--比STL那些天书好看些,呵呵。
Q: 什么是ACE或者ACE2插件
A: 如果把普通的插件比作一棵棵互不关联的小树, 那么ACE库或者ACE2库就是一棵大树干,所有基于ACE的插件就是长在上面的树枝 共有的部分都被集成到一起,因此代码非常短小和快速,而且稳定ACE2是用来取代ACE的版本,虽然有一些插件还未能从ACE转换到ACE2,但是ACE2系的插件现在可说代表了wow插件的最高水平
ACE2是为其他倚赖ACE2才能运行的插件提供库支持的一个库文件,本身不具备任何功能。
如BigWigs[ACE2]就说明BigWigs这个插件需要ACE2的支持。
使用方法:解压缩以后无论是ACE2还是!LIB都直接放入Interface\Addons里面就可以了。
ACE 类插件因为短小精悍 面向对象 有越来越多的插件开始以其作为编写库
目前已经发展到 ACE2
ACE2运行库开发组都是提倡直接内嵌的,完全没有必要单独提出来!没错如果你有10个内嵌了ACE2的插件,开始载入的时候确实会载入10个副本的ACE2导致Warmup显示内存占用偏大,但是在下次的碎片回收中,多余的ACE2副本都会被清除,只留下一个驻留内存。如果有新旧多个版本,则会自动选择最新的版本驻留。所以说,Warmup的数据,不能正确的反映出ACE2插件的实际内存使用。Warmup的作者本身也是ACE开发团队的成员,现在由于Warmup导致的一些对ACE2的误解,这家伙想必也是哭笑不得了,呵。
作为ACE2插件的使用者,完全没有需要去考虑运行库的版本更新等等问题,这是ACE2标准的一个重要精神,是ACE2开发初始就持有的初衷!所有的ACE2运行库,都是可直接内嵌、自动管理版本,不需要使用者进行任何管理干预的!
ACE2作为wow插件界的技术先锋,为插件作者提供了一个良好的开发平台,也切实地为玩家带来了易用、强大而低资源占用的优秀插件。希望大家不要为过往的成见和一些人的误导而错失了如此优秀的插件!
谈运行库而色变,完全是没有必要的。ACE2的优秀运行库(包括ACE2和基于ACE2标准的CandyBar, Dewdrop, Metrognome, Compost, ParserLib等等)不但是简化了插件的开发,优化了代码,也对降低插件资源占用作用。再加上ACE开发社区作者们强烈的优化意识,可以负责的说,ACE2的插件比其他插件绝对更省资源!
本质上来说, Qt是一个跨平台的C++应用程序开发框架,有时又被称为C++部件工具箱。Qt被用在KDE桌面环境、Opera、GoogleEarth、Skype、Adobe Photoshop Album和VirtualBox的开发中。它是诺基亚(Nokia)的QtDevelopment Frameworks 部门的产品。使用 Qt,只需一次性开发应用程序和用户界面,无须重新编写源代码,便可跨不同桌面和嵌入式 *** 作系统部署这些应用程序。
基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等图形界 面库和 Windows 平台上的 MFC,OWL,VCL,ATL 是同类型的东西,但是 Qt 具有下列优点:
a) 优良的跨平台特性:
Qt支持下列 *** 作系统: Microsoft Windows 95/98, Microsoft Windows NT, Linux,Solaris, SunOS, HP-UX, Digital UNIX (OSF/1, Tru64), Irix, FreeBSD,BSD/OS, SCO, AIX, OS390,QNX 等等。
b) 面向对象
Qt 的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常 方便的。 Qt 提供了一种称为 signals/slots 的安全类型来替代 callback,这使得各个元件 之间的协同工作变得十分简单。
c) 丰富的 API
Qt包括多达 250 个以上的 C++ 类,还替供基于模板的 collections, serialization, file, I/Odevice, directory management, date/time 类。甚至还包括正则表达式的处理 功能。
d) 支持 2D/3D 图形渲染,支持 OpenGL
e) 大量的开发文档
f) XML 支持
最近诺基亚发布了Qt 46——最新版的跨平台应用程序和用户界面框架。Qt 46 对全新平台提供支持,具有强大的全新图形处理能力并支持多点触摸和手势输入,让高级应用程序和设备的开发过程变得更加轻松和快乐。
诺基亚应用服务和框架副总裁Sebastian Nystrom说:“不论是什么样产品设计或开发平台,Qt 46的发布对开发人员来说都是一件令人兴奋的事。”
“开发人员可以轻而易举地为桌面平台或设备(包括数亿部基于Symbian 和 Maemo系统的设备)开发出具有视觉美感和网络连接功能的应用程序。”
Nystrm补充说:“开发人员将非常喜欢使用Qt直观的编程界面,快速开发出功能强大、外表美观的应用程序。”
更多平台
Qt46 首次包含了对Symbian 平台的支持,并在其所支持的平台中新增了 Windows 7、Apple Mac OS 106 (雪豹)和即将上市的Maemo 6。此外还为实时 *** 作系统QNX 和 VxWorks提供了网络社区支持。对Maemo 5的支持目前也已进入研发阶段,其技术预览版第二版已于今日发布。
Qt 对 Symbian 和 Maemo 的支持首次为开发人员创造了使用同一代码库同时针对这两个平台进行开发的机会。能够跨平台分享代码就意味着开发人员所开发的应用程序上市的速度将更快,影响的设备用户群将更广。
Qt Mobility项目下的全新Qt API技术预览版也于今日同时发布。这些跨平台的API为开发人员提供了多种功能,如导航类设备的定位功能,以及信息发送和接收、联系人和网络连接管理等。
外观更炫
Qt 46是在45图形增强功能的基础上创建的,进一步强化了这些图形功能,添加了全新的动画框架(Animation Framework)——包括直观的状态机功能——以及全新的高级图形功能,如不透明、阴影、闪光和滤镜等。
使用手指
Qt46最令人兴奋的新功能之一就是可以创建多点触摸应用程序。这种全新的基于多触点和手势的输入法(如轻触和动力滚动)使Qt46框架的功能更为强大,用户可以通过触觉以动态的方式与应用程序和设备进行互动。
性能更强
传统软件开发观点认为高级用户界面功能的获得通常是以性能严重受损作为代价的。Qt 46 对此观点提出了挑战,为此投入大量工作,既要获得最佳性能,又要能让开发人员所开发的产品达到用户所要求的“令人惊叹”的效果。
性能提升主要包括:一个经过高度优化、重新编写的 Qt GraphicsView 渲染算法、一个全新的 OpenGL 绘图引擎、WebKit、使用 OpenVG 对 2D 矢量图形的支持,以及对全新 DirectFB 的支持。
最新工具
在发布 Qt 46 的同时,作为 Qt 开发跨平台 IDE 的 Qt Creator 也发布了更新版本。Qt Creator 13 和 Qt 46共同构成的 Qt SDK,包含了开发跨平台应用程序所需的全部功能。(来自programbbs)
3、用QT能做什么?
在QT的官方网站谈到了15年来取得了的成就,它帮助世界各地和各个行业组织开发出先进的高度创新的应用和设备。
使用Qt,众多的开发商和公司已经能够:
● 减少了近50%的开发时间。
● 加速了50%的开发速度由于代码可维护
● 减少了50%的代码量
Qt的用户怎么说?
● 94%报告说,Qt的满足或超过其发展的期望
● 92%会向他人推荐使用Qt
● 76%报告因为使用Qt,生产率提高
Qt的应用领域:
有很多出名的例子是都是使用Qt开发的。例如: Arora(一款跨平台的开源网页浏览器)、eva(Linux版QQ聊天软件)、FreeMat(一个自由开源的数值计算环境和编程语言 )、Gadu-Gadu(即时通信软件)、Google地球(Google Earth)(三维虚拟地图软件)、ImageVis3D、KDE(著名的桌面环境)、Elibs(一个许多KDE程序都使用的共享库,如Amarok、K3b、KDevelop、KOffice等)、Lastfm播放器(著名的互联网音乐社区网站的桌面客户端)、Motorola A760(UI 以 Qt/Embedded 建构)、MythTV9(开源的数字视频录制软件)、Opera(著名的网页浏览器)、Qterm(跨平台的BBS软件)、QtExtended、Quantum GIS、Skype(一个使用人数众多的基于P2P的VOIP聊天软件)、SMPlayer(跨平台多媒体播放器)、TeamSpeak(跨平台的音效通信软件) 、Tlenpl:波兰人发明的 instant messaging client TOra、VirtualBox(虚拟机软件)、Xconfig(Linux的Kernel配置工具) 、chmcreator(开源的chm开发工具)…
以上就是关于在linux上使用qt进行界面开发时如何引用xwindow的全部的内容,包括:在linux上使用qt进行界面开发时如何引用xwindow的、如何使用Qt插件在Qt中进行ROS开发、如何在linux下使用Clion开发Qt的Gui程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)