gui toolkit需要c ++接口和智能画布支持

时间:2012-11-30 10:50:31

标签: c++ user-interface

我在tcl / tk方面有很多经验,但我想摆脱大型项目的脚本语言。但是tk canvas有一个非常强大的功能,我必须用一个好的gui工具包替换它。

我需要的一个功能是画布,我可以在其上创建活动的图形对象。例如,我有一个圆圈,可以在tk:

中通过鼠标拖动来移动
    #!/usr/bin/wish8.5

    canvas .c
    pack .c
    set item [.c create oval 10 10 20 20] 

    .c bind $item <Any-Enter> ".c itemconfig current -fill red"
    .c bind $item <Any-Leave> ".c itemconfig current -fill blue"

    bind .c <ButtonPress-1> "setlast %x %y"
    bind .c <B1-Motion> "moveit %x %y"

    set lastx 0
    set lasty 0

    proc setlast { x y } { 
        global lastx
        global lasty
        set lastx $x
        set lasty $y
    }   

    proc moveit { x y } { 
        global lastx
        global lasty
        .c move current [expr $x-$lastx] [expr $y-$lasty]
        set lastx $x
        set lasty $y
    }

我发现的任何其他工具包都需要大量手工制作。通常,您必须自己找出画布上的哪个项目位于鼠标下面,这对于复杂形状(如多边形)来说是非常大量的工作。

2 个答案:

答案 0 :(得分:1)

你试过GTK +还是QT? 好吧,QT主要是一个开发平台,而不是GUI库,但你也可以尝试。

答案 1 :(得分:1)

我尝试了C++/Tk但离开了那条道路。它不支持所有Tk,例如不支持笔记本和treelist等特色小部件,或者您无法将参数传递给命令。此外,实现非常复杂,如果某些东西没有按预期工作,那么调试很重要。经过一周的问题解决后,我决定转储C ++ / Tk。

退出C ++ / Tk,输入Qt(你应该说“可爱”,但它有点傻,所以我说“排队T恤”)。它有一个商业但也是一个开源许可证,正在积极开发,它有大量的例子,它支持大多数桌面和移动操作系统,有一个活跃的社区与维基和博客,... ... GUI和图形设备还有其他模块可用于多媒体,网络,SQL,测试......

由于QT的开发始于1991年(并且它曾经是诺基亚的一部分),有些部分是“旧的”并被新的东西取代,但与微软相比,文档更加清晰就此而言。而且与微软相比,整套技术是连贯的。

对于与C ++的集成,有两种方法:

  1. 使用MSVS和QT加载项。我尝试过,但无法使其正常工作。也许我应该尝试更多,但经过两天的尝试,我已经受够了。
  2. 使用将使用您已安装的C ++编译器的QT IDE。这很好,这就是我现在这样做的方式。缺点是编辑时错误检查不如MSVS那么强。然而,一个优点是,当你拥有免费版本的MSVS时,你也可以编译为64位。
  3. 如果你想制作一个GUI,你一定要考虑Qt。