对不起,如果我的下面的问题听起来很愚蠢,但我几乎是迷失方向!
我使用Qt-Designer创建了2个UI。
以下是主要代码: 主要代码 - http://pastebin.com/mbg2fuvh
我正在使用以下命令在Maya中运行它:
import sys
sys.path.insert(0, '/user_data/test')
import UI_test
reload(UI_test)
win = UI_test.MigrationUi()
win.show()
所以基本上我在这里想要实现的是我在Sub UI中输入的值没有将值映射到主UI上。 要复制案例:
我原以为如果单击OK
按钮,它会将值映射到列中,但似乎不是那种情况,尽管我在Qt Designer中为{{1}设置了一个信号/槽} / accepted()
非常感谢任何指针...
答案 0 :(得分:1)
我已经实施了两个解决方案,您需要对代码进行评论/取消注释。结果在两种情况下都是相同的。
解决方案1基于您在PublishInfoUI
类中使用的资产的引用。按下"确定"后,修改将在PublishInfoUI
上的self.assets
课程内完成。
在解决方案2的另一面,按下"确定",它会创建一个新的QTableWidgetItem
,然后将其设置为MigrationUI
类。然后在这个类中进行修改。
IMO,如果你将getValues重命名为updateValues或类似的东西,我更喜欢第一个解决方案。但正如我所说,结果在两种情况下都是相同的。
class MigrationUi(QtGui.QWidget):
### Some stuff
def editSelected(self):
selected_item = self.ui.treeWidget_migrateAnmg.currentItem()
if selected_item:
inputWin = PublishInfoUI(selected_item)
############################
# Here is the core modifications
if inputWin.exec_(): #Triggered if we press "OK"
#Solution 1:
inputWin.getValues()
#End solution 1
#Solution 2:
returnedAsset = inputWin.getValues()
print "Returned asset: "
print returnedAsset.text(0)
print returnedAsset.text(1)
print returnedAsset.text(2)
print returnedAsset.text(3)
print returnedAsset.text(4)
print returnedAsset.text(5)
print returnedAsset.text(6)
print returnedAsset.text(7)
print returnedAsset.text(8)
selected_item.setText(6, returnedAsset.text(6) )
selected_item.setText(7, returnedAsset.text(7) )
selected_item.setText(8, returnedAsset.text(8) )
#End solution 2
else:
print "Canceled/closed operation"
############################
else:
cmds.warning("Please select an item in ANMG field")
def slotCancel(self):
self.close()
class PublishInfoUI(QtGui.QDialog):
def __init__(self, asset, parent = None, modal = False):
QtGui.QWidget.__init__(self, parent, modal = modal)
self.ui = publishInfoUI_test.Ui_PublishInfo()
self.ui.setupUi(self)
self.assets = asset
self.fill_details()
def fill_details(self):
self.ui.lineEdit_rigUsed.setText(self.assets.text(0))
self.ui.lineEdit_anmLocation.setText(self.assets.text(5))
self.ui.textEdit_comment.setText(self.assets.text(7))
def getValues(self):
#Solution 1:
#Do the modification here
self.assets.setText(6, self.ui.lineEdit_description.text() )
self.assets.setText(7, self.ui.textEdit_comment.toPlainText() )
self.assets.setText(8, self.ui.textEdit_Vcomment.toPlainText() )
#End solution 1
#Solution2:
#Return a new asset and do the modification in MigrationUi class
assetToReturn = QtGui.QTreeWidgetItem()
assetToReturn.setText(6, self.ui.lineEdit_description.text() ) #Feel free to add more infos if necessary
assetToReturn.setText(7, self.ui.textEdit_comment.toPlainText() )
assetToReturn.setText(8, self.ui.textEdit_Vcomment.toPlainText() )
return assetToReturn
#End solution 2