QwizardPages للحفاظ على الحد الأدنى لأحجامها

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

  •  29-09-2019
  •  | 
  •  

سؤال

أنا أعمل مع QT (الإصدار 4.6 على نظام التشغيل Windows XP 32 بت وتجميع في QT Creator 2.0.0) ومحاولة الحصول على Qwizard للعمل.

المشكلة الأولى:

لدي ثلاثة QwizardPages في Qwizard حتى الآن. تحتوي كل صفحة على تطبيق QVBoxLayout أثناء تخطيطه. تحتوي صفحتي الأولى على محتوى صغير جدًا (مجرد ثلاثة سطر QLabel) ولكن لسبب ما ، هناك الكثير من المساحة البيضاء بين Qlabel و "<Back" ، "Next>" و "Cancel" Button Pane. أريد أن يكون لكل صفحة الحد الأدنى من المساحة البيضاء بناءً على المحتوى الموجود بداخله. في الماضي ، عندما وضعت QVboxLayout في QWidget غير الوالدين (نافذة خاصة) ، كانت النافذة دائمًا صغيرة بما يكفي لإصلاح QVboxLayout. الآن هناك مساحة بيضاء إضافية. هل هناك بعض الخيارات التي يجب علي إيقافها أو تشغيلها بحيث تكون Qwizardpages صغيرة قدر الإمكان؟

ثانيا (وعلى الأرجح على الأرجح المرتبطة بالولايات الأولى) مشكلة:

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

إعداد الهندسة الوحيد الذي أقوم به هو عندما أفعل أ

move(50, 50);

في مُنشئ Qwizard. لا تغييرات ... لا شيء صريح. أحاول أن أترك التخطيطات تفعل سحرها.

شكرا لمساعدتكم في المتقدمة.

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

المحلول

لإصلاح هذه المشكلة ، قمت بإنشاء فئة طفل من Qwizard وأنشأت فتحة خاصة مثل هذه:

void ChildClass::fitContents(int id)
{
    adjustSize(); // this automagically resizes the window to fit the contents
}

وجعلتها قد تم استدعاؤها في كل مرة تم تغيير الصفحة ، مثل ذلك:

connect(this, SIGNAL(currentIdChanged(int)), this, SLOT(fitContents(int)));
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top