QT qfiledialog - مربعات حوار أصلية فقط مع وظائف ثابتة؟

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

  •  25-09-2019
  •  | 
  •  

سؤال

أحاول ببساطة حفظ ملف. ومع ذلك ، أحتاج إلى اسم ملف يتم إدخاله بدون لاحقة للحصول على لاحقة افتراضية تلقائيًا (وهو ما يفعله setDefaultSuffix ()).

أفضل ألا أفقد حوار حفظ الأصلي تمامًا لهذا الغرض. لا يتم تحميل Exec () من Qdialog ، لذلك فهو يتجاوز تمامًا الخطاف الأصلي (يتجاهل خيار NontusEnativenivialog حتى لو كان خطأ).

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

هل هناك بعض الإشارات التي يمكنني التقاطها وضخت اللاحقة الافتراضية بسرعة إذا لم تكن موجودة؟ أنا لا أظن ، لأنه مربع حوار أصلي.

هل هناك شيء ما أفعله خطأ في المرشح؟ ليس لدي سوى اختيار مرشح واحد. يجب أن تستخدم هذا الامتداد.

هذا يبدو عرجاء جدا. لا ينبغي أن يؤدي تشغيل مربع الحوار "حفظ" وطبعة "اختبار" ببساطة إلى ملف بدون تمديد. "اختبار." ، نعم. "اختبار" لا توجد طريقة. هذا سوف يخلط حقًا بين المستخدمين عندما يضربون الحمل ولا يمكنهم رؤية الملف الذي تم حفظه للتو.

أعتقد أن الجزء المتقاطع من النظام الأساسي من QT يعطيني أقل وظيفة حوار ملف قاسم مشترك؟

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

المحلول

نعم ، إذا نظرت إلى رمز مصدر QT ، فمن الواضح أن الوظائف الثابتة فقط تستخدم مربعات حوار الملف الأصلي. لا يمكن الحصول على مربعات حوار أصلية بأي طريقة أخرى ، للأسف ...

نصائح أخرى

هل جربت خيارات المرشح في الوظائف الثابتة؟ [تحرير: عفوًا ، لاحظت أن لديك بالفعل.

لقد جربت هذا بنفسي ، على سبيل المثال ، ويبدو أن الأمور معقولة إلى حد ما:

QString filter = "Text files (*.txt)";
QString selectedFilter;
QString filename = QFileDialog::getSaveFileName(0, "", "", filter, &selectedFilter);

الدخول اختبار في مربع الحوار حفظ test.txt.
الدخول اختبار. في مربع الحوار حفظ اختبار .. txt.
الدخول test.foo في مربع الحوار حفظ test.foo.

تُظهر كل هذه الحوار مربع الحوار المناسبين إذا كان هناك بالفعل ملف موجود بهذا الاسم.

الطريقة الوحيدة التي يمكنني الحصول عليها اختبار, ، بدون أي لاحقة ، عن طريق المحيط بها مع اقتباسات ("اختبار") ، أو عن طريق الدخول أولاً *.* (والتي ستجعلها تعرض جميع الملفات) ثم الدخول اختبار. (على الرغم من أن هذا غريب هو ذلك selectedFilter سيظل يحتوي على المرشح الموضح في مربع الحوار ، حتى لو لم يتم استخدامه).

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