كيفية تعطيل سلوك إعادة تسمية الملف بالنقر المزدوج على QTreeView وQFileSystemModel في PyQt؟

StackOverflow https://stackoverflow.com//questions/12670874

سؤال

سؤال بسيط.أرغب في استخدام F2 أو Enter لإعادة التسمية، ثم انقر نقرًا مزدوجًا لفتح ملف.

استخدام self.treeView.doubleClicked.connect(self.doubleclick) أستطيع أن أفعل الأشياء في بلدي self.doubleClick الطريقة، ولكن لا يزال يتم تشغيل إعادة التسمية.

النموذج ليس للقراءة فقط (model.setReadOnly(False)).

هل كانت مفيدة؟

المحلول

بشكل افتراضي، doubleClicked تنبعث الإشارة مباشرة قبل إجراء التحرير العادي، والذي يتم تنفيذه بواسطة QAbstractItemView.edit وظيفة.

لحسن الحظ، هذه الوظيفة افتراضية، لذا يمكن إعادة تنفيذها في فئة فرعية:

class TreeView(QtGui.QTreeView):    
    def edit(self, index, trigger, event):
        if trigger == QtGui.QAbstractItemView.DoubleClicked:
            print 'DoubleClick Killed!'
            return False
        return QtGui.QTreeView.edit(self, index, trigger, event)

نصائح أخرى

لا أعرف إذا كان لديك هذا في إصدارات python، ولكن في C++ Qt، قمت فقط بتعيين مشغلات التحرير في QAbstractItemView:

void setEditTriggers ( EditTriggers triggers )

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top