怎么样把命令行软件包装成GUI软件?

开发基于GTK+或QT的应用程序
回复
头像
hikui
帖子: 460
注册时间: 2007-07-06 11:56
来自: 上海
送出感谢: 0
接收感谢: 0
联系:

怎么样把命令行软件包装成GUI软件?

#1

帖子 hikui » 2011-06-18 22:55

很多软件就是包装了命令行下面的软件。比如现在的uGet,就是包装了aria2。
请问这个是怎么包装的呢?比如我用QT,如何自己包装aria2?
头像
code vampire
帖子: 193
注册时间: 2010-06-19 12:50
系统: AIX、UBUNTU
送出感谢: 1 次
接收感谢: 4 次
联系:

Re: 怎么样把命令行软件包装成GUI软件?

#2

帖子 code vampire » 2011-06-18 23:29

CLI的软件大多靠命令选项控制,你可以研究软件源代码,也可以直接分析软件的命令选项,包装的GUI壳不过是系统调用,如标准C库的system,或Linux下的fork + exec,Windows下大体相同,都是新建一个进程,然后替换进程。

QT似乎没进程,所以只能是底层的操作系统调用,可能无法实现跨平台,其实QT如果要实现的话也是这么做,只不过把Windows下的调用和Linux下的调用封装的让你看不出差别。

至于如何传递参数,各种方法有不同的要求。至于GUI壳要做的,就是分析用户需求,配置命令选项,传字符串,最多建个文件什么的。也就这么多吧!

UNIX系统的一大特点就是程序小而精,如ls这些命令,grep这些命令,你都可以在你的程序中使用。Linux继承了这一优良特性,所以CLI程序的好处是很大的,几个小程序就可以组成复杂程序,而这些Windows程序员不懂,他们大多直接使用MFC或者微软的其他API,而这些东西更新太快,微软自己都在不断淘汰更别期望用他们跨平台,或者老程序在新机子使用了。Linux程序员的不同之处在于他们更喜欢直接使C/C++,一个优秀程序可以传好长时间。

如果你做开发的话也应该这样做,如QT,MFC这样的东西封装程度太高,都不是好东西,容易淘汰。正确的方法是用C/C++写基础程序,你的功力如果够的话跨平台不过是配库,换函数。如果想做GUI就拿QT或MFC做壳,这样你不必去关心QT,MFC这些带来的麻烦,只是简单的壳而已,不喜欢马上就可以再写一个。觉得不好看可以马上再写一个,而且比较安全。


Keep it easy stupid !




I am Code Vampire .




I like Linux . I like open source .

头像
懒蜗牛Gentoo
论坛版主
帖子: 7293
注册时间: 2007-03-02 17:36
送出感谢: 0
接收感谢: 96 次

Re: 怎么样把命令行软件包装成GUI软件?

#3

帖子 懒蜗牛Gentoo » 2011-06-19 10:39

最简单的方法就是gui软件调用系统命令
复杂一点的就研究下cli软件的源码,调用它提供的api
虽然世上没有完美的东西,但这并不影响我们追求完美,因为只有偏执狂才TMD能成功。
10.04新手入门——笨兔兔讲述自己的故事
头像
lainme
论坛版主
帖子: 7805
注册时间: 2008-09-13 19:17
系统: Arch Linux (x86_64)
送出感谢: 3 次
接收感谢: 68 次
联系:

Re: 怎么样把命令行软件包装成GUI软件?

#4

帖子 lainme » 2011-06-19 16:54

aria2提供了xml-rpc控制接口。现有的uget等都是用xml-rpc的。QT的,我记得也有一个用aria2的下载器,叫karia2吧
头像
lexdene
帖子: 434
注册时间: 2010-02-21 16:19
来自: 大连
送出感谢: 1 次
接收感谢: 2 次
联系:

Re: 怎么样把命令行软件包装成GUI软件?

#5

帖子 lexdene » 2011-08-19 14:15

通过Qt的QProcess类产生一个系统调用,
通过系统调用来调用CLI命令。
回复

回到 “GTK+和QT”