pyqt 中是否有任何曲线控制?我附上了一张基于 maya gradientControl 的图像。我正在寻找与 pyqt 类似的东西,我想在其中编辑曲线,并且每次编辑都应该触发一些信号。现在我可以使用 sip 并且可以将 maya gradientControl 包装到我的 pyqt 窗口中,但它确实没有按预期工作。这是我正在尝试的代码。它只是一个 QWidget 所以当我在曲线上添加一个点时很难找到发生了什么。
import os
import maya.cmds as cmds
import maya.mel as mel
import maya.OpenMayaUI as mui
import sys
import sip
from PyQt4 import QtGui, QtCore, uic
baseUI = os.path.join(os.path.dirname(__file__), "range_ctrl.ui")
baseUIClass, baseUIWidget = uic.loadUiType(baseUI)
def getMayaWindow():
windowPointer = mui.MQtUtil.mainWindow()
return sip.wrapinstance(long(windowPointer), QtCore.QObject)
def convertToQT(controlName):
controlPoniter = mui.MQtUtil.findControl(controlName)
if controlPoniter is not None:
return sip.wrapinstance(long(controlPoniter), QtCore.QObject)
class MayaRangeCtrl(baseUIWidget, baseUIClass):
def __init__(self, parent=getMayaWindow()):
super(baseUIWidget, self).__init__(parent)
self.setupUi(self)
self.setObjectName("mayaRangeCtrl")
self.setWindowTitle("Range Control")
self.p1_vbox = QtGui.QVBoxLayout(self.frame)
self.range_ctr = cmds.gradientControlNoAttr( 'mayaaaa', h=90)
mayaQTObj = convertToQT(self.range_ctr)
self.p1_vbox.addWidget(mayaQTObj)
self.setCentralWidget(self.frame)
self.show()
def main():
myWindow = MayaRangeCtrl()
def run():
main()
这是屏幕截图。
并且 ui 包含一个 mian 窗口和一个 QFrame。这是玛雅文档
但我正在寻找一些纯 QT 小部件或一些想法,我们可以如何实现它。我尝试使用 QPolygon,但不知道如何操作控制点运行时间。任何的想法 ?
提前致谢。