1
mlzboy 2012-04-16 19:39:45 +08:00
我追着问一下,qt和pyqt的差异在哪,刚开始学QT还没有入门呢,求求指点
|
2
thedevil7 OP @mlzboy qt 是 C++ 的库. PyQt 是 python 的绑定库. 和 Qt 内容上好像没有差别. 我现在很多资料也是看 PyQt 自带的 assistant 的文档, 虽然是针对 C++ 写的. 但是 Python 也能用.
|
3
reus 2012-04-17 11:06:55 +08:00
只是显示可以直接在paint里画,如果需要更多交互就加子item
|
4
thedevil7 OP @reus 多谢, 现在我添加了子 item, 然后设置了字体, 这样就能够在图形内部显示字体, 而且又可以控制大小. 现在又出了一个新问题.. 我有动作需要连接槽, 但是槽时 python 的函数, 需要指定参数. 如果直接写 self.connect(action, SIGNAL(signal), function(arg1,arg2,arg3)), 这个函数就会立即被调用.. 正在找有没有不调用的方法.
|
5
thedevil7 OP 问题解决咯~~~ 在 QMenu 里面重新写了一个函数.
|
6
reus 2012-04-17 23:21:19 +08:00
@thedevil7 可以写成 self.connect(action, SIGNAL(signal), lambda: function(arg1, arg2, arg3))
|
7
thedevil7 OP @reus 多谢, 现在的问题变成了, 我有一个 Item 由菜单中的对 Item 代表的数据有改变, 而且会影响其他的 Item, 现在需要对所有 Item 进行更新重新判断位置并且重画.
我想到的是, Menu.exec() 之后利用传入的 scene 执行所有 Item 的 update() 函数. 但是没有效果. Python 新手... PyQT 新手... |
8
reus 2012-04-17 23:53:20 +08:00
@thedevil7 https://gist.github.com/2406975 可以看下这个例子里的GraphWidget里的timerEvent方法,就是定时更新所有item的。这是pyqt源码的examples/graphicsview目录里面的
其实就是把boundingRect和paint写对就行了,这两个方法需要一些比如位置之类的信息,所以就需要另一些方法来更新这些信息。注意如果item的boundingRect改变了的话,需要调用prepareGeometryChange |