找回密码
 立即注册
收起左侧

简单扫描应用的逻辑实现:采用QML还是C++?

4
回复
4942
查看
[复制链接]
累计签到:3 天
连续签到:2 天
来源: 2019-5-29 22:20:32 显示全部楼层 |阅读模式
7Qter豆
# 提问者背景
初学者。不专门学习软件开发,但是偶尔会用到。本科使用C++和Qt做过简单的应用;接触QML两周,学习了坛主分享的Qt Quick教程

# 问题背景
近期实验需要用QML开发一个简单的二维码扫描的手机应用,但是应用的逻辑有些特殊,与实验设计紧密相关,需要控制扫描应用本身的一些属性,比如“扫描”按钮的有无,开始扫描后的延迟时间。本人能力很有限,不清楚框架怎么搭建比较好,希望有前辈愿意指点迷津!

# 目前实现部分
在Qt creator建立了简单的应用外壳。qml文件包含main.qml和scanPage.qml,scanPage.qml里有camera,videoOutput, scanButton,以及扫码库(用codeFilter指代)。
在main.cpp里注册了codeFilter,可以在scanPage.qml的VideoOutput里应用到filter。

# 希望实现的效果
页面只有2页,初始的介绍页面(已实现)和扫描的页面(目前仅显示取景器和按钮)。
主要流程:实验者依次使用手机扫描墙上的多个二维码,完成若干次后,换到下一位实验者。每一位实验者的情况会有一些区别。
实验者使用取景器扫描目标,扫描完成后的弹窗显示下一个扫描目标,实验者继续扫描,直到弹窗显示“换为下一个实验者”。

实验有两个与应用相关的变量:延迟时间(弹窗跳出的延迟,比如t1, t2 ,t3),扫描方式(点击按钮后开始扫描 Explicit;不显示按钮的自动扫描 Auto)。

由于每个实验者的实验情况都有所不同(比如实验者一号P1是t1 Explicit,t2 Explicit,t3 Explicit,P2是t1 Explicit,t3 Explicit,t2 Explicit),希望应用能够自动控制实验情况,按照规定的顺序切换弹窗跳出的延迟时间以及扫描方式

此外,还希望记录实验者扫描的时间及对应的实验情况,也即每次codeFilter返回扫描结果的时间+延迟时间+扫描方式+实验者序号等等。这个可能是存储在本地的文本文件里。


# 具体问题
  • 如何控制实验情况?- 需要控制的变量有两个,延迟时间以及扫描方式,对应弹窗跳出的时间,和按钮的状态。我是应该在QML文件里用js控制,还是在C++里写一个controller来控制呢?我的“猜想”是,将规定的顺序写好在一个字符串里,每次取一点出来,根据字符内容控制两者。不过不知道怎么具体实现。
  • 如何控制弹窗的内容?显示下一次扫描的对象,或是要求换为下一个实验者。这个应该可以在qml里用js实现?
  • 如何记录扫描时间,且存储这些信息到本地?大概是需要用C++来实现。



很抱歉问了这么复杂空洞的问题,但实在是我的实验进度卡在了这里,不知道如何展开。导师给了我很多年前的一个扫码库项目,用作我的实验的library,因为原本是Qt项目,便让我也用QML开发。因为我说自己用过Qt他才交给了我。原本觉得这个应用不会太复杂,但是实际做起来才感到无从下手。导师也不熟悉QML,所以只能自己摸索。

希望能有前辈给点思路,或者指路相关的参考案例!非常感谢!
如果对于问题描述有不清楚的地方,请随时提问。

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册
回复

使用道具 举报

累计签到:118 天
连续签到:2 天
2019-5-30 09:27:49 显示全部楼层
我觉得Ui界面可以用QML,逻辑实现肯定c++比较好。但是新手一般对于QML怎么和C++怎么交互比较头疼,所以如果你只做个简单的二维码扫描器,用Qt QWidget实现是最简单的。
回复

使用道具 举报

累计签到:955 天
连续签到:1 天
2019-5-30 12:24:42 显示全部楼层
你说这个我恰好做过,需求跟你差不多,我说一下各种方法的优缺点,qt直接做,简单方便,但是界面难看,qml界面稍微好看点,但是涉及与C++部分交互,需要一点时间弄懂,我最后还是直接Android做的,有C++基础,Android开发很快就弄好了。
回复

使用道具 举报

累计签到:3 天
连续签到:2 天
2019-5-30 21:06:13 显示全部楼层
wdmxtk002 发表于 2019-5-30 12:24
你说这个我恰好做过,需求跟你差不多,我说一下各种方法的优缺点,qt直接做,简单方便,但是界面难看,qml ...

哈哈,我这应用对外观也没什么要求,不过就是逻辑实现不清楚用js在QML里写还是用C++写。QWidget确实挺好用的,我以前也是不用QML直接在CPP里写……谢谢你的回答。
回复

使用道具 举报

累计签到:3 天
连续签到:2 天
2019-5-30 21:07:33 显示全部楼层
zhuxianfei 发表于 2019-5-30 09:27
我觉得Ui界面可以用QML,逻辑实现肯定c++比较好。但是新手一般对于QML怎么和C++怎么交互比较头疼,所以如果 ...

嗯嗯,我可能没描述清楚,逻辑也可以用QML里的java script实现,所以有些纠结……我现在打算先把伪代码写出来,之后再看用C写还是用js。可能偏向于C吧。谢谢你的回答!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了