Home
Categories
WIKI
Topic
User
LANGUAGE:
中文
English
[Linux锐捷认证]重复造轮子,用Qt写的MentoHust图形前端
Apps Section
1.2w
views ·
45
replies ·
To
floor
Go
zhtengw
deepin
2012-11-01 08:50
Author
2012.12.16
做了一个原生64位的deb包,欢迎下载测试!!
2012.12.10
做了deb、rpm、slackware和解压即用的二进制包。
warmth1.png
warmth2.png
各位,我创建了一个开源项目,用Qt写了一个MentoHust的图形界面,取名叫WarMtH,现在已经发布了1.0版本,项目主页
http://code.google.com/p/warmth
,代码托管到
http://gitcafe.com/zhtengw/WarMtH
有兴趣的朋友不妨去看看。
可我为什么要重复造这个轮子呢~
起因,以前Google过图形MentoHust,无果。后来偶然在deepin的博客中发现了birl,gtk写的,试用后发现总有些不对劲,还不如直接用 MentoHust。于是我动了自己写一个的念头,但因为没空,而且自己也缺乏相应的技术知识,就没有动手。
导火索,在宿舍,一般是我的电脑用作无线 AP,连上锐捷,他们连我的无线网。就在三个星期前,10月9日,我不在宿舍,可能无线有什么问题了,他们连不上网,就想在我那退了锐捷给他们上,可惜他们无从下手,便直接拔了我的网线~ 于是,第二天,我便决定,写一个图形前端,使不会用Linux的人也可以知道怎样认证校园网,然后我就可以安心外出那啥了XD~
一开始,我想就直接写一个shell script,利用 kdialog或zenity作窗口交互,毕竟我只是学了一学 期JAVA,会用fortran写写物理程序,简单接触过 c,没学过c++,不懂Python,没学过算法没学过计算机基础~但我又转念一想,为何不趁此学学新东西呢。鉴于gtk程序已有,而qt又比较容易学,我就果断装上qt-creator开始了。 我先是在网上找了几个qt的入门教程,通读一 下,照着例子做了一些基本的界面,熟悉熟悉 c++语言和qt的函数。然后去图书馆借了一本 c++的书,读了函数、指针、类几章,大约理解了那些代码的意义,接着,我便上路了。 学着例子,改几个组件,很快就做出了第一个界面,也就是用户名密码的输入界面。然后便是解决调用MentoHust的问题,一通搜索(这以后每遇到一个问题,我都是这样,百度搜qt+中文功能,Google和qt帮助搜qt+英文功能,三者结合),用上了叫qprocess的类,并将用户名和密码作为参数传递,成功认证!对我来说,这真的是一个里程碑。
我对这个frontend的设想是,主界面为用户名密码输入框,有认证按钮和配置按钮。点击认证会隐藏主窗口,然后弹出认证信息窗,显示 MentoHust的终端输出,并可以最小化到托盘;点击配置可以弹出配置界面,能将配置作为参数传给MentoHust,并同时保存到配置文件。由于我没有系统地学习过计算机基础,所以只有对界面的主观设想,并没有良好的程序构思。在具体实现上就是,一有什么想法,查查资料,就动手去做。
最初比较纠结的是,不同类的对象之间的交互, 以及信息窗口死活只有在kill掉MentoHust后才能有文字。我是将一个窗口定义为一个类的,可是在主窗口对象和信息窗口之间怎么交互纠结了好久。白驹过隙,在经过很多搜索都没得到有效的技术指导之后,我突然明白了,在我的自定义类中,将很多qt类的对象作为了成员,那么,我的自定义类也可以作为成员对象存在呀(是不是有人要笑我好笨了,^o^)。于是,我创建一个信息窗口的对象作为主窗口的私有成员,顺利完成了它们之间的交互。接着,在这篇文章[1]中发现有关缓冲的问题,下载了MentoHust的源码,给主函数中加了一 行:
setvbuf(stdout, (char *)NULL, _IONBF, 0);
Copy the Code
禁用其全缓冲,成功编译,信息也乖乖地来到我的gui窗口里了,哇哦。接下来的事情就顺利很多了,主要是对qt和c++ 的理解稍微加深了一些,也比较会筛选相关信息了。
不知不觉,我就渐渐实现了最初的设想,虽然在写的过程中仍时常冒出新想法,但我觉得是时候发一个版本了,于是我在GZLUG邮件列表里宣布了1.0版的发布。接着,我继续编写,慢慢去实现我新的想法,项目还在继续。
本来,我是想将自己的代码合并到MentoHust中去的,但作者总没回复我,也就搁置了。
鉴于个人水平、精力有限,程序中的很多实现显得简单低级,希望有合作者参与项目。
Reply
Like 0
Favorite
View the author
All Replies
<
1
2
3
3
3
/
3
To page
Go
nianhanxian
deepin
2013-05-02 01:10
#41
你好,我可以对你的项目进行二次开发吗
Reply
Like 0
View the author
dwock
deepin
2013-05-13 17:44
#42
恭喜恭喜,支持楼主!
Reply
Like 0
View the author
火炎焱燚
deepin
2013-05-22 03:56
#43
现在我们学校貌似用mentohust已经连不上去了,抓包了都不行。。。。
Reply
Like 0
View the author
dujianchi
deepin
2013-05-28 22:07
#44
我和楼主学的东西差不多,甚至比楼主多学了C++和QT……但是竟然没有楼主这种敢于创新的心态,惭愧之……
Reply
Like 0
View the author
tonghoil
deepin
2016-11-01 08:58
#45
认证失败:
$$ 系统提示: 需要使用管理员指定的客户端!
!! 打开libnotify失败,请检查是否已安装该库文件。
学校用的锐捷V4.99
Reply
Like 0
View the author
<
1
2
3
3
3
/
3
To page
Go
Please
sign
in first
New Thread
Popular Ranking
Change
Install problem (09_ostree_sys_init.job hooks)
Setup keyboard
Large-Scale Community Testing Report - Critical Technical Issues
Display not correctly identified (sort of)
Volume slider jumps away from click
Unable to log in to deepin ID
Popular Events
More
做了一个原生64位的deb包,欢迎下载测试!!
2012.12.10
做了deb、rpm、slackware和解压即用的二进制包。
warmth1.png
warmth2.png
各位,我创建了一个开源项目,用Qt写了一个MentoHust的图形界面,取名叫WarMtH,现在已经发布了1.0版本,项目主页http://code.google.com/p/warmth ,代码托管到http://gitcafe.com/zhtengw/WarMtH 有兴趣的朋友不妨去看看。
可我为什么要重复造这个轮子呢~
起因,以前Google过图形MentoHust,无果。后来偶然在deepin的博客中发现了birl,gtk写的,试用后发现总有些不对劲,还不如直接用 MentoHust。于是我动了自己写一个的念头,但因为没空,而且自己也缺乏相应的技术知识,就没有动手。
导火索,在宿舍,一般是我的电脑用作无线 AP,连上锐捷,他们连我的无线网。就在三个星期前,10月9日,我不在宿舍,可能无线有什么问题了,他们连不上网,就想在我那退了锐捷给他们上,可惜他们无从下手,便直接拔了我的网线~ 于是,第二天,我便决定,写一个图形前端,使不会用Linux的人也可以知道怎样认证校园网,然后我就可以安心外出那啥了XD~
一开始,我想就直接写一个shell script,利用 kdialog或zenity作窗口交互,毕竟我只是学了一学 期JAVA,会用fortran写写物理程序,简单接触过 c,没学过c++,不懂Python,没学过算法没学过计算机基础~但我又转念一想,为何不趁此学学新东西呢。鉴于gtk程序已有,而qt又比较容易学,我就果断装上qt-creator开始了。 我先是在网上找了几个qt的入门教程,通读一 下,照着例子做了一些基本的界面,熟悉熟悉 c++语言和qt的函数。然后去图书馆借了一本 c++的书,读了函数、指针、类几章,大约理解了那些代码的意义,接着,我便上路了。 学着例子,改几个组件,很快就做出了第一个界面,也就是用户名密码的输入界面。然后便是解决调用MentoHust的问题,一通搜索(这以后每遇到一个问题,我都是这样,百度搜qt+中文功能,Google和qt帮助搜qt+英文功能,三者结合),用上了叫qprocess的类,并将用户名和密码作为参数传递,成功认证!对我来说,这真的是一个里程碑。
我对这个frontend的设想是,主界面为用户名密码输入框,有认证按钮和配置按钮。点击认证会隐藏主窗口,然后弹出认证信息窗,显示 MentoHust的终端输出,并可以最小化到托盘;点击配置可以弹出配置界面,能将配置作为参数传给MentoHust,并同时保存到配置文件。由于我没有系统地学习过计算机基础,所以只有对界面的主观设想,并没有良好的程序构思。在具体实现上就是,一有什么想法,查查资料,就动手去做。
最初比较纠结的是,不同类的对象之间的交互, 以及信息窗口死活只有在kill掉MentoHust后才能有文字。我是将一个窗口定义为一个类的,可是在主窗口对象和信息窗口之间怎么交互纠结了好久。白驹过隙,在经过很多搜索都没得到有效的技术指导之后,我突然明白了,在我的自定义类中,将很多qt类的对象作为了成员,那么,我的自定义类也可以作为成员对象存在呀(是不是有人要笑我好笨了,^o^)。于是,我创建一个信息窗口的对象作为主窗口的私有成员,顺利完成了它们之间的交互。接着,在这篇文章[1]中发现有关缓冲的问题,下载了MentoHust的源码,给主函数中加了一 行:
不知不觉,我就渐渐实现了最初的设想,虽然在写的过程中仍时常冒出新想法,但我觉得是时候发一个版本了,于是我在GZLUG邮件列表里宣布了1.0版的发布。接着,我继续编写,慢慢去实现我新的想法,项目还在继续。
本来,我是想将自己的代码合并到MentoHust中去的,但作者总没回复我,也就搁置了。
鉴于个人水平、精力有限,程序中的很多实现显得简单低级,希望有合作者参与项目。