1

I have a lot experience in tcl/tk, but I want to get rid of scripting languages for large projects. But tk canvas has a very big functionality which I have to replace with a good gui toolkit.

One of the features I need is a canvas on which I can create active graphical objects. For example, I have a circle which can be moved by mouse drag like this in 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
    }

Any other toolkit I found needs a lot of handcrafted work for this. Typically you have to find out yourself which item on a canvas is under the mouse which is a very large amount of work for complex shapes like polygons.

4

2 回答 2

1

你试过 GTK+ 或 QT 吗?嗯,QT 主要是一个开发平台,而不是一个 GUI 库,但你也可以尝试一下。

于 2012-11-30T11:03:04.927 回答
1

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

退出C++/Tk,进入Qt(应该说“cute”,但是有点傻,所以我说“queue tee”)。它有商业许可证,也有开源许可证,正在进行积极的开发,有大量的例子,它支持大多数桌面和移动操作系统,有一个活跃的社区,有 wiki 和博客,...... GUI 和图形的东西还有其他模块可用于多媒体、网络、SQL、测试……

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

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

  1. 使用 MSVS 和 QT 插件。我试过了,但无法让它正常工作。也许我应该尝试更多,但经过两天的尝试,我已经受够了。
  2. 使用将使用您已安装的 C++ 编译器的 QT IDE。这工作正常,这就是我现在正在做的方式。一个缺点是编辑时错误检查不如 MSVS 强大。然而,一个优点是,当您拥有 MSVS 的免费版本时,您也可以编译为 64 位。

如果你想制作一个 GUI,你绝对应该考虑 Qt。

于 2015-09-29T12:56:24.480 回答