Tri*_*tan 10 c++ user-interface qt wxwidgets visual-studio
我希望能够尽可能快速,轻松地构建GUI应用程序.我在C++中胜任(虽然不是专家,也没有正式的培训),但从未使用过GUI构建工具包或框架或任何东西.我不是一名专业程序员,在构建GUI应用程序时,我完全缺乏经验和无知.花了几个小时研究试图弄清楚要做什么; 但是,只会变得更加困惑和沮丧.
Qt和wxWidgets似乎是跨平台应用程序最受欢迎的选项,尽管跨平台对我来说不一定非常重要; 如果这意味着最快的学习曲线,那么仅限Windows就可以了.
Qt看起来很酷,Qt Creator看起来很漂亮,有很多很好的演示,除了它有自己的所有类,我不是太热衷于学习一堆只适用于Qt平台本身而不是更普遍的东西.我想我可以避免使用Qt类,除了我必须使用它们的GUI内容,但我不知道那将是多么明智或不明智.
我认为Visual Studio会有最小的学习曲线,但是当我打开一个测试GUI应用程序时,我看到一堆外国人看起来像克拉(^)的东西 - 我在网上发现这些意思是"句柄",我甚至无法理解定义或目的("有点像指针但不是真的"基本上是我读过人们如何定义它们).
我对wxWidgets几乎一无所知,或者它与Qt的比较.
因此,每个选项都有一个很大的学习曲线 - 理想情况下,我想知道哪个选项最大限度地减少了学习工具包/框架本身的时间.由于我可能永远不会从我创建的程序中赚钱,所以我花在学习特定工具包上的时间非常昂贵.我只是希望能够使用我拥有的C++知识制作一个功能程序,但是以GUI形式.目前似乎我想制作一个GUI应用程序,我不得不花费更多的时间来学习我使用的GUI框架,而不是编写应用程序本身的功能部分.
任何来自人更聪明,更有经验的投入都会受到赞赏:)
Kit*_*une 12
哪个是最容易学习的,实际上取决于你个人的学习方式.
就个人而言,到目前为止,我发现Qt是最容易学习的.GUI类很好用,但我发现非GUI类非常好,可以很容易地避免使用更基本的API通常会遇到的许多常见问题.该文档是优秀的,海事组织,因为是书籍,示例等它也正在非常积极地开发了一些新技术,在不久的将来即将到来(如DeclarativeUI).
我发现Visual Studio/Windows API/.Net要学习起来有点复杂.MSDN上的API文档相当复杂,并没有以我直观的方式进行组织.
我曾尝试过几次学习WxWidgets,但我从未喜欢过API文档.
这一切只是我个人的经历,YMMV当然.我会说只是涉足所有这些,看看哪一个带你走得最远,尝试多个也不会受到伤害.
qua*_*ark 12
首先,开始简单.这个主题有很多.如果您发现它很难,请不要尝试一次性使用它.
大多数优秀的GUI包都有教程.我能给出的最好建议是你尝试每一个,或至少其中几个.它们是您选择的图书馆最好的简短介绍,如果它们有任何好处,它们会缩小您最初需要吸收的内容.这将给你一些比较的基础,因为他们每个人都试图做非常相似的事情(你会在完成之前看到其中的一些),但他们有不同的感觉.你很可能会发现你对一个人有偏好,那就是认真对待的人.它还将让您了解GUI编程的难点,与一个软件包的细节分开,如果您只使用了一个软件包,那么您将不会看到它.就个人而言,我觉得这种知识非常有用,因为它让我对细节不那么害怕.
以下是一个地方的教程列表,尽管您可能已经看过它们:
其次,听起来你需要深入了解GUI编程的概念,而不仅仅是特定的库.这里没有替代书.我不是很了解所有这些,但是最好的不仅仅是教你工具包的细节,他们会教你一般概念以及如何使用它们.以下是一些开始的列表(一旦你有标题,亚马逊和Stack Overflow将有助于选择一个):
第三,利用设计工具(Qt Creator,VS的表单构建等). 不要首先尝试阅读它们生成的所有代码:首先运行自己的小程序.否则,很难知道什么对基本程序有用,什么不对.细节迷失了.一旦你掌握了一些基本下来,虽然,不要用它们作为参考来学习如何做具体的效果.如果你可以在设计工具中使用某些东西,那么你可以查看他们生成的特定代码,以便能够尝试自己的手写程序.它们对于中级学习非常有用.
我并不过分热衷于学习一堆只适用于Qt平台本身而不是更普遍的东西.
我在这里继续GRB 的评论:不要担心这个.无论您使用哪种工具包,您都需要学习很多特定于工具包的知识.但是,你也会学到很多东西这是一般于GUI与任何像样的工具包的编程,因为他们将不得不支付大量的同地面.布局,事件,小部件/控件之间的交互,理解计时器 - 这些将出现在您使用的任何GUI工具包中.
但请注意,任何严肃的GUI包都是时间的投入.如果您决定选择一个包,那么学习第二个包的过程会更容易,但每个大型图书馆都有自己的个性,大部分时间都花在学习它的怪癖上.也就是说,我认为,在处理任何复杂的主题时都是如此.
我想我可以避免使用Qt类,除了我必须使用它们的GUI内容,但我不知道那将是多么明智或不明智.
您不需要大多数Qt的非GUI类来正确使用Qt的GUI.有一些例外(例如QVariant),因为GUI类使用它们,所以你需要它们.我发现你可以根据具体情况学习.
作为一个通过Qt学习C++的人,我只能说他们在一起工作得非常好.C++纯粹主义者(就像我已经成为)会在Qt中找到许多不符合他们喜欢的东西(moc预处理器,例如,并且错误报告的例外情况仍然存在),但回过头来看,Qt 为我提供了一个非常温和的C++介绍.
如果你像我一样,你会在每个Qt项目中输入一些提升库,因为我们想要编写"真正的"C++,而不是Qt使用的软化的东西:)
我会建议使用wxWidgets.对我来说,它非常直观,看起来不错.
Code :: Blocks是用它构建的,所以检查一下是否喜欢图形.
wxWidgets还有很多绑定,比如wxPython,wxErlang和其他,所以如果你决定关闭C++,你可以随身携带wxWidgets.
我也使用wxWidgets并且一直用于仅限Windows的应用程序(唯一的缺点是wxWidgets因大型.exe文件大小而臭名昭着,这对你来说可能是也可能不是问题).我发现从一开始就使用它非常简单,特别是当与GUI设计器结合使用时(我个人使用wxDev-C++).
我从来没有使用过Qt,所以我不能说它简单,但我怀疑难度与wxWidgets的难度大不相同.但是,我可以说的是,无论你使用什么API(wxWidgets,Qt,WinAPI等),你的代码都会"锁定"到那个特定平台,所以如果你觉得学习Qt会锁定你Qt平台(因为任何这些API 都会发生同样的事情).
但是,如果你只是在Windows上工作,你可能想先用WinAPI做一些简单的程序.这样,在进入Qt/wxWidgets之前,您已经基本了解了最低级别的Windows GUI编程.也就是说,如果你真的进入跨平台编程,那么不要担心,直接进入Qt/wxWidgets.