QListWidget'ta doku varlıkları vb. Içeren bir kitaplığım var. Benim durumumda, widget'ların sürükle ve bırak özelliğini bir QApplication'a etkinleştirmek istiyorum. dropEvent öğesini Maya ile nasıl bağlarım yani maya bir şeylerin düştüğünü kaydeder? Birisi bana doğru yönde işaret edebilir mi lütfen.QWidget'i Maya'ya sürükleyip bırakın
0
A
cevap
0
Bazı ciddi deneme ve hata ile aslında oldukça düz olan bir çözüm buldum, çünkü çoğunlukla bu durumda ... Yani asıl mesele, olayımı ana uygulamamla maya olarak kaydetmektir.
def eventFilter(self, obj, event):
self.obj = obj
if event.type() is event.DragEnter:
self.mouse_button = QtGui.QApplication.mouseButtons()
event.accept()
if event.type() is event.Drop:
library_w = event.source()
if self.mouse_button == QtCore.Qt.LeftButton:
....
0
Ben doğru bir şekilde maya ana penceresinde olay damla işleyebilir sanmıyorum, ama bir şey:
main_win = mhelper.getQMayaMainWindow()
main_win.installEventFilter(drop_filter)
ardından olay filtresinde ben çağrıldığını hangi olay kontrol etmeliyiz emin, her QtWidget üzerinde yapabilirsiniz. Benim durumumda, qt ana penceremde yaptım.
class Droper(QtGui.QMainWindow):
def __init__(self, parent=None):
super(Droper, self).__init__(parent)
self.setAcceptDrops(True) # Very important
def dragEnterEvent(self, event):
"""
The event called when the user drag elements over the drop place
"""
if event.mimeData().hasUrls:
event.accept()
else:
event.ignore()
print "We don't want this !"
def dropEvent(self, event):
"""
The event called when the user drops its elements
Only if dragEnterEvent accept the event
"""
for url in event.mimeData().urls():
print url
Widget'ınızda acceptDrop'leri etkinleştirmeniz gerekiyorsa, bunu doğrudan Qt Designer'daki özelliklerinde yapabilirsiniz. Ayrıca, kullanmak istediğiniz olayları tanımlamanız gerekir, 4 sürükle ve bırak olayını görmek için QWidget.dragEnterEvent'a gidin.
Bunu nasıl yapacağınızı anlamıyorsanız, yardımcı olmanızı umarız.
Sorunuzu açıkça anladığınızdan emin değilim. Bırak etkinliğini nerede etkinleştirmek istiyorsunuz? QListWidget'inizde veya Maya'nın ana penceresinde mi? Doku minik resimlerini QListWidget'inizden sürükleyip Maya'nın manzarasında bırakmak ister misiniz? – DrHaze
Evet, çok sayıda listWidgetItems (hdrs vb. Küçük resimler vb.) Içeren bir kütüphane pencerem var. Maya penceresine sürükleyip bırakmak istiyorum; Ve bir fonksiyon çalıştırabilirim. Plan düşmeye ve IES ışık profiline ya da HDR ışık dokusuna maya haline getirilir ve bu da uygun bağlantılar vb. Ile ışık oluşturur. – arvidurs