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

怎么做到UI界面与程序功能分离

7
回复
16361
查看
[复制链接]
累计签到:10 天
连续签到:1 天
来源: 原创 2014-5-21 16:22:49 显示全部楼层 |阅读模式

马上注册,查看详细内容!注册请先查看:注册须知

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

x
新人求教。
各位朋友,我想用qt做一个应用程序配置的向导,遇到一个困惑,怎么把界面做的漂亮,要让代码易于维护,
起初,我想到的是把界面与功能分离开来,但是在qt里面不知道怎么做。这几天,学习了一下qml,看了一下qt5.2自带的
demo和文档,知道了怎么把c++类嵌入到qml中。但是我发现,在qml中还是有程序功能的代码,比如一些类似信号,槽的机制。
请问大家,有没有办法只在qml里面做显示界面,把功能处理都放在qt c++类里面呢?这样的话,做界面和写功能就能分开考虑了。
还有一个问题,如果程序本身的功能和逻辑比较复杂,qml是不是不适合了?因为界面和功能毕竟还是要交互的嘛。
总之一句话,功能与业务分离,用qt可以使用哪些技术做到,又能做到什么程度?欢迎大家给我提供一些思路。
谢谢!

回复

使用道具 举报

尚未签到

2014-5-21 17:34:43 显示全部楼层
可能是你对qml的模式不熟悉,我自己一直都是像你说的这样写程序框架。

简单来说,qml模式更像互联网的CS模式,qml就作为C端,本身带有逻辑代码是很正常不过的,而C++则可以作为服务提供端,专门做数据处理。

多看看精华区的文章,总有对你有用的
回复 支持 反对

使用道具 举报

累计签到:10 天
连续签到:1 天
2014-5-23 13:53:27 显示全部楼层
Joey_Chan 发表于 2014-5-21 17:34
可能是你对qml的模式不熟悉,我自己一直都是像你说的这样写程序框架。

简单来说,qml模式更像互联网的CS模 ...

那你能提供给我一个例子,程序从C++端运行,而不是从main.cpp就把控制权交给main.qml那种吗,比如说,我先在main.cpp里面做一些准备工作,然后调用qml显示界面,最后又返回到c++端做一些后续处理。也就是说,程序的逻辑整体由C++端发起,控制,结束,界面装载用的是qm。伪代码大概是这样:
main.cpp
int main()
{
      c++代码;
     createXXX();//调用qml装载某部分界面
     createYYY();//调用另外的qml装载其他界面
    C++代码;
}
回复 支持 反对

使用道具 举报

尚未签到

2014-5-23 19:59:11 显示全部楼层
wwj_ff 发表于 2014-5-23 13:53
那你能提供给我一个例子,程序从C++端运行,而不是从main.cpp就把控制权交给main.qml那种吗,比如说,我 ...

qt自带的例子很多这种模式的。。比如qml可以在widget里面加载,widget你应该懂吧,我还没听说过会qml反而不会widget的

另外精华区有很多教程是关于qml的,多看看有帮助
回复 支持 反对

使用道具 举报

累计签到:10 天
连续签到:1 天
2014-5-28 10:15:29 显示全部楼层
Joey_Chan 发表于 2014-5-23 19:59
qt自带的例子很多这种模式的。。比如qml可以在widget里面加载,widget你应该懂吧,我还没听说过会qml反而 ...

我还是觉得qml与c++交互不太方便,考虑再三,换了一种风格来分离功能、样式和布局,那就是用qt设计师来完成布局,用qt样式表来设置样式,用c++完成功能
回复 支持 反对

使用道具 举报

尚未签到

2014-5-28 14:35:51 显示全部楼层
wwj_ff 发表于 2014-5-28 10:15
我还是觉得qml与c++交互不太方便,考虑再三,换了一种风格来分离功能、样式和布局,那就是用qt设计师来完 ...

qml对 高耦合低内聚 的软件原则上是很有帮助的,慢慢你就知道了
回复 支持 反对

使用道具 举报

累计签到:21 天
连续签到:1 天
2014-7-11 14:07:49 显示全部楼层
wwj_ff 发表于 2014-5-28 10:15
我还是觉得qml与c++交互不太方便,考虑再三,换了一种风格来分离功能、样式和布局,那就是用qt设计师来完 ...

QT设计师这个东西怎么说呢,感觉还是不要用为好!
回复 支持 反对

使用道具 举报

累计签到:1100 天
连续签到:1 天
2015-4-10 22:13:24 显示全部楼层
qss样式表级很好啊!你可以试一试
回复 支持 反对

使用道具 举报

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

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