01 Qt官方示例Demo介绍

Qt官方示例

作者将狼才鲸
日期2022-03-06

一、官方示例总体介绍

  • Qt官方示例的介绍:

参考网址: Qt Examples and Demos(Qt的例子和演示)
参考网址: Qt Examples And Tutorials
参考网址: All Qt Examples

  • Qt官方示例的源码地址:
    Qt\Examples\Qt-6.2.3\

  • 部分示意图:

000_qt6.2.3_multimedia:音视频多媒体播放


  • qt_gui_simple2complex\source\003_QtExamples_Qt-6.2.3\下的Demo部分:

  • Qt官方Demo的整体介绍详见 子文档QtExamples_Qt-6.2.3.md


001_animation_动画_缓冲曲线.gif

image


002_Screenshot_截屏.png

image


003_Systray_修改系统托盘.gif

image


004_ClassWizart_翻页.gif

image


005_Extension_扩展列表.gif

image


006_FindFiles_打开文件夹_查找文件.gif

image


007_LicenseWizard_注册向导.gif

image


008_StandardDialogs_常用对话框.gif

在这里插入图片描述


009_TabDialog_列表对话框.gif

image


010_TrivialWizard_简单向导.gif

image


011_DraggableIcons_拖动图标.gif

image


012_DraggableText_拖动文本.gif

image


013_DropSite.png

image


014_FridgeMagnets_拖动贴靠.gif

image


015_Puzzle_拼图游戏.gif

image


016_BlurPicker_模糊选择器.gif

image


017_FadeMessage_界面渐变.gif

image


018_Gallery_综合界面和主题.gif

image


019_ImageGestures_打开图片.gif

image


  • 前面已列出的官方用例还不到1/5,Qt\Examples\Qt-6.2.3\下的Demo还有非常多, 建议先了解有哪些类型的Demo,需要用到相关功能的时候先去找官方示例,后续的示例效果图省略。

  • 官方所有示例的介绍有文字简介和示意图地址(英文版,可以用浏览器翻译成中文查阅,先看Qt Widgets章节,主页只有文字介绍,点开具体示例可以看到演示图片和使用说明):
    All Qt Examples

  • 其它的演示效果图参考网址:
    Qt Examples Qt实例汇总
    Qt Examples


  • 目录结构:
jim@DESKTOP-SVP3BEM MINGW64 /d/ProgramFiles/Qt/Examples/Qt-6.2.3
$ ls
widgets/			// C++界面编程
multimediawidgets/	// 多媒体:音视频播放与录制
multimedia/			// 音视频输入输出设备、编码解码模块的示例
opengl/				// 2D、3D图形库
quick/				// 高级用户界面编程示例,示例多
qml/				// Qt新的界面设计语言
quickcontrols2/		// Quick不同界面风格
demos/				// 一些Quick综合的示例,如闹钟、壁纸等
sql/				// 数据库
qpa/				// Qt Platform Abstraction平台抽象层,兼容不同设备
svg/				// 矢量图
designer/			// 所见即所得的界面设计方法,如使用鼠标拖动图标的方式
network/			// 网络
qtconcurrent/		// 高级多线程操作
tutorials/			// 闹钟等示例
xml/				// XML语言,可用于读取存储配置信息
assistant/			// Qt文档助手、和简单的文本阅读器
gui/				// GUI底层接口,里面有时钟和彩虹背景
uitools/			// 动态界面
embedded/			// 嵌入式应用如地图等
help/				// 一个配置工具软件
vulkan/				// 2D、3D绘图框架
dbus/				// 进程间通讯
linguist/			// 应用文本翻译
wayland/			// 一个显示服务器
未列出的则不重要,有些文件夹是Qt自己的单元测试用例
  • Widgets C++ 界面编程Demo
jim@DESKTOP-SVP3BEM MINGW64 /d/ProgramFiles/Qt/Examples/Qt-6.2.3/widgets
$ ls
dialogs/	effects/		graphicsview/	mainwindows/	richtext/
touch/		animation/		doc/			gallery/		itemviews/
painting/	scroller/		tutorials/		windowcontainer/
desktop/	draganddrop/	gestures/		layouts/		qnx/
tools/		widgets/

jim@DESKTOP-SVP3BEM MINGW64 /d/ProgramFiles/Qt/Examples/Qt-6.2.3/widgets/widgets
$ ls
calendarwidget/	elidedlabel/	lineedits/		shapedclock/
stylesheet/		validators/		charactermap/	groupbox/
mousebuttons/	sliders/		tablet/			analogclock/
codeeditor/		icons/			movie/			spinboxes/
tetrix/			wiggly/			calculator/		digitalclock/
imageviewer/	scribble/		styles/			tooltips/
windowflags/
  • 多媒体应用multimediawidgets,和多媒体编解码multimedia
jim@DESKTOP-SVP3BEM MINGW64 /d/ProgramFiles/Qt/Examples/Qt-6.2.3/multimediawidgets
$ ls
camera/  player/  videographicsitem/  videowidget/

jim@DESKTOP-SVP3BEM MINGW64 /d/ProgramFiles/Qt/Examples/Qt-6.2.3/multimedia
$ ls
audiodevices/	audiorecorder/	declarative-camera/	spectrum/
audiodecoder/	audiooutput/	audiosource/		devices/
shared/			video/
  • opengl 2D 3D示例
jim@DESKTOP-SVP3BEM MINGW64 /d/ProgramFiles/Qt/Examples/Qt-6.2.3/opengl
$ ls
2dpainting/     computegles31/  hellowindow/   paintedwindow/
textures/       contextinfo/    hellogl2/      qopenglwidget/
threadedqopenglwidget/          cube/          hellogles3/
openglwindow/   qopenglwindow/
  • svg位图
jim@DESKTOP-SVP3BEM MINGW64 /d/ProgramFiles/Qt/Examples/Qt-6.2.3/svg
$ ls
draganddrop/  embedded/  embeddedsvgviewer/  richtext/  svggenerator/
svgviewer/
  • QML:Qt界面设计语言,语法类似于CSS和JavaScript,基于QQuick功能;以后设计GUI的时候建议都使用QML,这是未来的一个趋势,使用QML时用不上C++。

参考网址: QML入门教程:一、QML和QtQuick简介以及QML实例
参考网址:QML基础——初识Qt Quick Designer
参考网址:Qt介绍—QPA(Qt Platform Abstraction)
参考网址:Qt之SVG:Qt简单使用SVG的介绍
参考网址:Qt:了解 Qt Designer
参考网址:Qt并发模块Qt Concurrent的使用
参考网址:qt中xml的使用
参考网址:Qt Assistant 介绍
参考网址:Qt开发:Qt GUI模块——简介
参考网址:Qt OpenGL教程
参考网址:Qt单元测试工具 QTestlib
参考网址:QtUiTools Module
参考网址:Qt Quick 简介
参考网址:Vulkan 简介
参考网址:QtDBus总结
参考网址:Qt Linguist 介绍和简单应用
参考网址:Qt Quick Controls2 使用不同风格

二、各个示例的细节

  • 详见各个子目录
  • 7
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这是一个简单的binder示例demo,包含一个服务端和一个客户端: 服务端代码(ServiceDemo.cpp): ``` #include <binder/IServiceManager.h> #include <binder/IPCThreadState.h> #include <binder/ProcessState.h> #include <binder/IMemory.h> #include "ServiceDemo.h" using namespace android; int main(int argc, char **argv) { sp<ProcessState> proc(ProcessState::self()); sp<IServiceManager> sm = defaultServiceManager(); sm->addService(String16("demo.service"), new ServiceDemo()); ProcessState::self()->startThreadPool(); IPCThreadState::self()->joinThreadPool(); return 0; } ServiceDemo::ServiceDemo() { ALOGD("ServiceDemo"); } ServiceDemo::~ServiceDemo() { ALOGD("~ServiceDemo"); } int32_t ServiceDemo::add(int32_t a, int32_t b) { ALOGD("add: %d + %d = %d", a, b, a + b); return a + b; } ``` 客户端代码(ClientDemo.cpp): ``` #include <binder/IServiceManager.h> #include <binder/IPCThreadState.h> #include <binder/ProcessState.h> #include <binder/IMemory.h> #include "ServiceDemo.h" using namespace android; int main(int argc, char **argv) { sp<ProcessState> proc(ProcessState::self()); sp<IServiceManager> sm = defaultServiceManager(); sp<IBinder> binder = sm->getService(String16("demo.service")); sp<ServiceDemo> serviceDemo = interface_cast<ServiceDemo>(binder); ALOGD("add result: %d", serviceDemo->add(1, 2)); return 0; } ``` 需要注意的是,在服务端代码中,需要实现aidl文件中定义的接口方法。在本例中,接口方法只有一个add(),返回两个int类型数据的和。 在客户端代码中,首先通过defaultServiceManager()获取IServiceManager对象,然后通过getService()获取服务端的IBinder对象,最后将IBinder对象转换为服务端接口ServiceDemo对象,并调用其中的方法。 本例中,将服务名设为"demo.service",可以根据实际需求修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值