有人可以解释GUI的工作原理以及何时开始使用GUI吗?[关闭]


16

我已经学习C ++大约一个月了,在进一步学习之前,我想清除一下我一直遇到的乏味问题。我知道GUI是什么,但是我真的不知道它是如何工作的,也许不是流行的示例?

尽管我知道命令行编程是基本的基础知识,但我认为将GUI摆弄起来还是很有趣的。

尽管我还有大约300万个其他问题,但我会保存下来:D


1
最后一行让我微笑:)为此+1
塞浦路斯

Answers:


28

我将概括介绍几个GUI库,但在非常高的层次上,您需要了解的最重要概念是GUI是事件驱动的

在控制台应用程序中,用户输入通常发生在您定义的特定点。提示用户,等待用户输入,然后根据该输入计算出一些内容。主要区别之一是输入仅在一个地方发生,而您正在从命令行(stdin在C ++中)读取文本。

在GUI应用程序中,通常会有多个可能发生输入的地方,例如执行不同操作或文本字段的按钮。这是事件起作用的地方。例如,单击按钮会触发事件。此事件需要由事件处理程序处理,该事件处理程序通常只是在触发此类事件时调用事件对象的方法。您的按钮如何知道事件处理程序?您通常订阅(或收听)。

这是一个“受C ++启发”的示例,这不是实际的QT或C ++代码。

class MyClickHandler : public ClickListener{
   void clickHandler(ClickEvent e){
      showAlertBox("The button "+e.getSource().getName()+" has been clicked"); 
   }
};

创建Button时,将针对该按钮注册MyClickHandler类的实例。

...
MyClickHandler handler();
Button b("Save");
b.registerListener(handler);
...

现在,每次b单击按钮时,都会出现一个消息框,显示“按钮已单击保存”。

您可以想象一个GUI应用程序有两个阶段:

  • 建立GUI:在启动过程中,创建所有对象并相互连接的时间很短。
  • 事件循环:你的GUI是在一个大while循环,并且只是坐在那里空转,直到事件被触发。

这是一个非常简单的示例,但是我建议您使用任何框架,在单击按钮时尝试显示一个消息框。

对于该框架,有很多这样的框架:对于C ++,我可能会推荐Qt。

最后的建议是:远离GUI设计人员,直到您真正了解后台发生了什么。编写一些简单的示例并先了解事件循环然后再转到更复杂的布局并不难。


如果在类定义的末尾添加分号,并公开继承,则它将是正确的/可能的C ++语法。
Lstor 2011年

1
做完了 但是我不想引起任何错误的期望,因为代码根本无法运行。我的大部分经验是在Swing中,这可能反映在类名中。相同的概念在不同的框架中将有不同的称呼。
sebastiangeiger

1
+1这似乎是回答问题的唯一答案(对我来说,他似乎不只是在问框架,而是在问一般概念)
Federico klez Culloca

1
Ewwww ....丑陋的听众废话。
DeadMG

7

现在是学习GUI porgramming的好时机。如您所知C ++,我建议您看一下QT。丰富的文档资料,庞大的用户基础以及大量可供学习的示例/教程。


1
Qt的+1-@David-Qt有自己的开发环境,称为Qt Creator,它是独立的,免费的,与他人相比相对简单。Qt功能强大,直观,广泛,文档齐全,并且拥有大量活跃的用户群。它很容易上手,并且有许多示例可供您开始玩并开始做自己的事-这是一种很好的学习方式。可以在这里
Roger Attrill

我倾向于对此表示反对。如果您不知道要寻找什么,QT会鼓励使用C ++进行许多非常糟糕的做法。–仅用了一个月的C ++,您就不需要这样做。此外,它涉及C ++中的一些复杂方面。如果可能的话,我将首先使用其他语言开始GUI编程,然后集中精力正确使用C ++。
Konrad Rudolph

3

您也可以从Microsoft Visual Studio C ++ Express开始。IDE非常友好且易于使用(免费!),您将能够快速创建自己的第一个GUI应用程序...这将帮助您专注于了解事件驱动编程的基础,这是另一种方法您将需要掌握。

您也可以直接开始构建WPF驱动的应用程序,但是我首先要开始使用Windows Forms,这是一种不易掌握的技术,因为它只是带有Microsoft Windows Forms API的基本C ++。


1
在VC ++ Express中,您可以使用以下代码编写GUI:1. Win32 API,它非常老,笨拙且可笑2. MFC是一堆废话3. WTL更好,但不是跨平台的。4. C ++ / CLI不受欢迎,支持不佳(甚至没有智能感知)且过于复杂。Qt更容易,跨平台,具有出色的GUI设计器,并且具有大量有用的非GUI类,这在C ++中具有很小的标准库,这一点非常重要。
2011年

0

也许更适合标记为c ++的StackOverflow;但不管怎么说。

在Google上查找其中一些内容;Qt,WxWidgets,TheForgers的WinApi,Fltk ...

GUI并不难使用,尤其是在您已经了解c ++之后。我认为应该使用WxWidgets;Qt对于一个月的学习来说有点太复杂了。您可以在几个小时内拿起Wx。


-1

用户不喜欢复杂的东西。控制台是一件复杂的事情,这就是为什么您必须创建更友好和易于理解的GUI应用程序的原因。这是我看到的最明显的原因。您可以查看gtk或Qt-这两个是最受欢迎的。


2
对于用户而言,CLI并不复杂,GUI的定义也更为复杂。它们更容易访问,并且复杂程度更高。
Ominus
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.