如何制作Linux C++图形用户界面应用程序

24

最简单的方法是使用哪种方式来制作Linux C++图形用户界面应用程序?我正在使用GNOME和Ubuntu 8.10。

8个回答

38

最简单的方法是使用图形用户界面(GUI)构建工具。

对于GTK,可以使用Glade

对于QT,可以使用QT Designer

对于wxWidgets,可以使用wxDesignerwxFormBuilder

更新:我应该提到,这些工具可以输出C++等多种语言。


这个不能被点赞的次数够多...这些太棒了! - Arafangion
1
Glade和gtkmm,完美的组合! - codekiddy
1
QT Designer的URL已经失效:"所请求的页面'products/developer-tools/'无法找到。" - mazunki

24

我个人更喜欢QT,因为我喜欢使用信号/槽机制,并发现用它快速开发应用程序很容易。您的其他选择可能是wxWidgets和GTK+。


Qt很棒,尽管Qt应用程序在Gnome中可能会看起来有些不协调。 - David Z
1
我认为QGtkStyle在QT4.5下,尤其是与本地gtk应用程序相结合时,融合得非常好。 - CTT
1
它整合得相当不错,但仍存在一些集成问题。例如,像颜色选择器这样的标准对话框是不同的。虽然我真的很喜欢Qt,但不幸的是,与GTK+相比,颜色选择器特别糟糕。但他们想要改变这种情况(使用GTK+选择器)。 - ypnos
我切换到了Kubuntu,现在一切都很好。 - Kredns

13

gtkmm是gtk的c++绑定,它应该可以正常工作


我看了一下gtk,但是我不知道如何安装它。我运行了configure,但它没有起作用。 - Kredns
尝试类似于sudo apt-get install gtk-dev的命令。 - Andy
非常感谢!我没想到会这么容易! - Kredns
不要忘记,Ubuntu和Debian倾向于将许多“经典”的开发基础设施放在build-essential软件包中,因此也要安装它。 - Arafangion

7

请明确所提到的工具包(GTK+、QT和wxWidgets)

GTK+是GNOME使用的工具包。

QT是KDE使用的工具包。

wxWidget旨在成为一个抽象层,可以更少地针对桌面环境进行特定的设计。(并且其他工具包也类似)。

还有一个值得一探究竟的工具包是EFL,这是E17使用的工具包,尽管该桌面环境的开发速度缓慢,但我听说它的设计很好。请注意,启示项目的某些组件(如imlib2)已经被其他项目使用多年。


"冰川开发速度"? 我不得不取消订阅启示录CVS邮件列表,因为它的流量太大了 - 每天15个以上的主要提交! - greyfade
我已经有一段时间没有关注它了。但据我所知,这个项目仍然没有发布1.0版本。 - John Nilsson
1
你的表述让人感觉好像KDE是Qt的唯一主要用户。实际上,Qt应用程序包括Google Earth、Opera和Skype。 - Stefan Monov

6
尝试使用QT,它可以在Ubuntu上运行,并且有很多开发工具和文档支持。
例如一个tutorial,或者另一个tutorial,或者还有一个tutorial

4

最简单的方法肯定是使用Ultimate++。我无法描述它有多棒,你只需要尝试一下并自己相信即可。以下是一个完整的应用程序:

#include <CtrlLib/CtrlLib.h>

using namespace Upp;

class HelloWorld : public TopWindow {
    MenuBar menu;
    StatusBar status;

    void FileMenu(Bar& bar);
    void MainMenu(Bar& bar);
    void About();

public:
    typedef HelloWorld CLASSNAME;

    HelloWorld();
};

void HelloWorld::About()
{
    PromptOK("{{1@5 [@9= This is the]::@2 [A5@0 Ultimate`+`+ Hello world sample}}");
}

void HelloWorld::FileMenu(Bar& bar)
{
    bar.Add("About..", THISBACK(About));
    bar.Separator();
    bar.Add("Exit", THISBACK(Close));
}

void HelloWorld::MainMenu(Bar& bar)
{
    menu.Add("File", THISBACK(FileMenu));
}

HelloWorld::HelloWorld()
{
    AddFrame(menu);
    AddFrame(status);
    menu.Set(THISBACK(MainMenu));
    status = "Welcome to the Ultimate++ !";
}

GUI_APP_MAIN
{
    SetLanguage(LNG_ENGLISH);
    HelloWorld().Run();
}

刚刚看到这个,完全同意:这绝对是创建GUI应用程序最简单、最容易的方法;而且你不必使用Upp-classes/templates,可以轻松地使用boost :-) 我尝试了在这个问题和其他地方提到的所有知名IDE,最终选择了ultimate++和code::blocks(最适合CLI-dev)。 - slashmais

4
我建议使用Juce。它优雅、跨平台、快速、编写良好,几乎完全没有bug,并且在运行的每个平台上都是像素级别相同的。已知的bug数量几乎总是为零,因为当有bug报告时,作者会立即修复!The Register之前写过一篇文章,对该库进行了很好的概述。

我几年前使用过这个库,它写得很好,值得推荐。我们的应用程序在Windows XP和Linux上是像素对像素完全相同的。 - Morten Jensen

3
我可以亲自证明Qt在一般情况下以及Linux特定开发中的易用性。赶快试试吧 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接