+ -
当前位置:首页 → 问答吧 → c++图形化

c++图形化

时间:2011-12-01

来源:互联网

小弟想学习下如何实现图形化。也就是脱离那种文件形式的输入输出。而是像软件那样的图形界面。
比如听说俄罗斯方块是图形界面的最基本练手的程序,想请教下怎么做出俄罗斯方块。
现在我用的环境是在linux下。
谢谢
(有一定的c++基础,不错的算法基础)

作者: superzxn0705   发布时间: 2011-12-01

SDL?
ncurses?
gtk?
Qt?

用SDL写俄罗斯方块,网上有资料。

作者: subfate   发布时间: 2011-12-01

你是想自己写出来一个GUI系统呢,还是用图形界面写程序?

作者: jiandingzhe   发布时间: 2011-12-01

网上有很多现成的代码示例。。你是linux环境,你找找qt的例子好了。。很简单的,无非就是显示图片,然后定时器之类的应用。。完全不用算法,哈哈

作者: bobye1230   发布时间: 2011-12-01

引用 2 楼 jiandingzhe 的回复:

你是想自己写出来一个GUI系统呢,还是用图形界面写程序?

自己写GUI系统。。请教步骤及方法。请别告诉我到网上找示例,那样和废话一样。谢谢

作者: superzxn0705   发布时间: 2011-12-01

自己写GUI库可是很不简单的事情。GUI是相当复杂的系统。
我没有写过GUI系统,我只用过。

大致上,你需要实现这些东西:
1:事件系统:让对象上可以绑定回调函数。
2:窗口管理器:这里的窗口指的不是应用程序窗口,而是作为元件基类的屏幕上的矩形区域。窗口系统用来控制它们的遮盖、渲染、移动什么的。而且,把这部分抽象出来,可以便于在不同的底层窗口系统上实现。
3:最后才是图形元件类库,以提供具体的窗口、框、按钮、输入栏什么的。

上述那些是基本的组成部分。然后你可能需要写一个图形化的界面设计器,现在的GUI系统好像都带这种玩意,比如Gtk的glade,Qt的Qt designer。

你可以参考下那些开源的GUI库的设计,比如Gtk,看看人家是怎么做的。

作者: jiandingzhe   发布时间: 2011-12-01

谢谢。那你用的是不是就像vc++那样,拖动条形框之类的然后再在那里面加代码?

作者: superzxn0705   发布时间: 2011-12-02

引用 6 楼 superzxn0705 的回复:

谢谢。那你用的是不是就像vc++那样,拖动条形框之类的然后再在那里面加代码?

我只用过Gtk的glade interface designer。
它的模式和windows那套不太一样。它提供的设计器只能设计界面,存成一个xml格式的界面描述文件。然后在代码里使用一个builder类自动解析描述文件、构建对象、绑定指定名字的回调函数等等。

作者: jiandingzhe   发布时间: 2011-12-02

引用 2 楼 jiandingzhe 的回复:

你是想自己写出来一个GUI系统呢,还是用图形界面写程序?

可以自己写GUI,控制linux系统的framebuffer(帧缓冲),通过往帧缓冲里写数据,即可实现在屏幕上显示图形。

作者: liuchao35758600   发布时间: 2011-12-02

以上几位前辈的意思想开发一些小型软件就需要借助其他的c++的平台。就像vc++一样?而不是用纯文本编辑之后就出图形化软件?
小弟现在虽然对算法一些比较了解,但对实体软件很是迷茫啊。现在在国外上computer science。理论难度连算法导论的难度都达不到,感觉理论再学下去增长已经不大了,想自己开始着手开发一些小软件为以后的co-op实习积累一些经验。但看遍几乎所有c++的书,讲的基本上也都是把类介绍了就没有了。而且身边没有一个高人可以指点,所以目前比较迷茫,不知道往哪方面走了。。。。。

作者: superzxn0705   发布时间: 2011-12-02

引用 9 楼 superzxn0705 的回复:

以上几位前辈的意思想开发一些小型软件就需要借助其他的c++的平台。就像vc++一样?而不是用纯文本编辑之后就出图形化软件?
小弟现在虽然对算法一些比较了解,但对实体软件很是迷茫啊。现在在国外上computer science。理论难度连算法导论的难度都达不到,感觉理论再学下去增长已经不大了,想自己开始着手开发一些小软件为以后的co-op实习积累一些经验。但看遍几乎所有c++的书,讲的基本上也都……

程序开发哪有自己重做所有的东西、不用第三方库的?你疯了?
而且看你这段话的需求,你根本不需要搭建一个GUI库。
你还是看看Qt吧,这个GUI库跨平台做的似乎比较好。官方网站上会提供教程的。

作者: jiandingzhe   发布时间: 2011-12-02