我在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
}
我发现的任何其他工具包都需要大量手工制作。通常,您必须自己找出画布上的哪个项目位于鼠标下面,这对于复杂形状(如多边形)来说是非常大量的工作。
答案 0 :(得分:1)
你试过GTK +还是QT? 好吧,QT主要是一个开发平台,而不是GUI库,但你也可以尝试。
答案 1 :(得分:1)
我尝试了C++/Tk但离开了那条道路。它不支持所有Tk,例如不支持笔记本和treelist等特色小部件,或者您无法将参数传递给命令。此外,实现非常复杂,如果某些东西没有按预期工作,那么调试很重要。经过一周的问题解决后,我决定转储C ++ / Tk。
退出C ++ / Tk,输入Qt(你应该说“可爱”,但它有点傻,所以我说“排队T恤”)。它有一个商业但也是一个开源许可证,正在积极开发,它有大量的例子,它支持大多数桌面和移动操作系统,有一个活跃的社区与维基和博客,... ... GUI和图形设备还有其他模块可用于多媒体,网络,SQL,测试......
由于QT的开发始于1991年(并且它曾经是诺基亚的一部分),有些部分是“旧的”并被新的东西取代,但与微软相比,文档更加清晰就此而言。而且与微软相比,整套技术是连贯的。
对于与C ++的集成,有两种方法:
如果你想制作一个GUI,你一定要考虑Qt。