كيف يمكنني إخبار QTableWidget لإنهاء تحرير الخلية؟

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

  •  21-08-2019
  •  | 
  •  

سؤال

وأنا تظهر قائمة منبثقة لتحديد بعض القيم في QTableWidget. أدنى البند هو إدخال "قائمة تعديل"، عند تحديد يجب أن تظهر نافذة جديدة تلقائيا ويجب على QComboBox تتلاشى وعودة الخلايا إلى حالة كيو تي :: DisplayRole.

والآن كيو تي لديه كل تلك طيفة API المكالمات مثل QTableWidget.edit() وQTableWidget.editItem()، ما أنا حقا تبحث عن هو QTableWidget.endEditing()، ويفضل دون تحديد مؤشر الخلية، على الرغم من أنني يمكن الحصول على ذلك باستخدام هذه الدعوة:

table.currentIndex()

و... ولكن أنا لا أعرف ما إذا كنت تستطيع أن تضمن أن الخلية الحالية هي الخلية التي تم تحريرها في جميع الأوقات.

هل هناك API لإغلاق هذا النوع من المحررين؟

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

المحلول

QTableWidget يرث 19 فتحات العامة من QWidget. واحد من هؤلاء هو setDisabled ()، الذي يجب تعطيل أحداث مساهمة في هذا القطعة وجميع أبنائه.

وسوف أحاول:

table.setDisabled( true );
table.setDisabled( false );

وعلى الرغم من أنك قالت انها لا عمل لك، هناك طريقة بديلة: إذا كنت لا تحب أن (يفقد الجدول التركيز، أعتقد)، يمكنك محاولة استخدام <لأ href = "https://doc.qt.io/qt-4.8/qabstractitemview.html#EditTrigger-enum" يختلط = "noreferrer نوفولو"> EditTriggers . على سبيل المثال:

table.setEditTriggers( QAbstractItemView::NoEditTriggers );

نصائح أخرى

وtable.setCurrentItem(None) هو ما عملت بالنسبة لي. (لا تنسى لمنع الإشارات إذا كنت تستخدم بعض وظيفة فتحة cellChanged / itemChanged).

وهذا هو الحال مع باي كيوت. لC ++ أعتقد استبدال أي منهم NULL.

وأنت قد تكون قادرة على استخدام QTableWidget.closePersistentEditor () لإغلاق المحرر. ومع ذلك، QAbstractItemView.closeEditor () قد يكون أقرب إلى ما تريد، وخصوصا منذ يبدو لك أن تكون مريحة مع API استنادا QModelIndex وتستخدم بالفعل القطعة محرر المخصصة.

لا أستطيع أن أتكلم عن الحاجيات القائمة. ولكن، أنا حصلت هنا تحاول أن تفعل شيئا من هذا القبيل.

وكنت النقر المزدوج فوق خلية، وبناء على العمود، وتنشئة شكل الفرعية مع القائمة، ثم متى كان ذلك خطوة مغلقة إلى العمود المناسب المقبل استنادا إلى القيمة المحددة.

وكانت مشكلتي أتمكن من الحصول على القيمة في الخلية و "حدد" الخلية المناسبة القادمة، ولكن الخلية الأصلية بقي تحديد في وضع التحرير!

ووبزغ أخيرا لي أن بلدي انقر نقرا مزدوجا فوق تم اختيار الخلية، أي. التحرير.

وA-بنقرة واحدة يختار الخلية ولكن لا يفتح على وضع التحرير.

ملاحظة جانبية: لا يمكن الحصول على هذا النموذج الفرعي للعمل مشروط حقا، لذلك أنا خلقت حلقة في شكل الدعوة: بينما كان شكل شبه واضحة، مع رمز الوحيد هو app.processEvents ()

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