سؤال

في تطبيق QT الخاص بي ، أستخدم QTABWIDGET للتنقل الأساسي. هذا qtabwidget أقوم بإعداده في واجهة المستخدم. في بعض علامات التبويب من QTABWIDGET ، أحتاج إلى أن يكون QSTACKEDWIDGET قادرًا على "التحرك في العرض".

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

MyWidget *myWidget = new MyWidget(ui.stackedWidget);
ui.stackedWidget->addWidget(myWidget);

ما هي أفضل وأسهل طريقة لإعداد QStackedWidget داخل علامة التبويب QTABWidget؟

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

المحلول

ماذا عن:

QTabWidget *myTabWidget = new QTabWidget(this);
QStackedWidget *myStackedWidget = new QStackedWidget(myTabWidget);

myTabWidget->addTab(myStackedWidget, "Stacked Widget");

كما يمكنك إزالة جميع صفحات المكدس الموجودة في مصمم/منشئ QT. ما عليك سوى النقر بزر الماوس الأيمن على القطعة المكدسة وإزالة جميع الصفحات الموجودة. ثم يمكنك إضافة الصفحات المطلوبة في الكود باستخدام addWidget().

نصائح أخرى

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

في الواقع ، يسمح المصمم من QT 4.6 بحذف جميع الصفحات من عنصر واجهة عنصر مكدسة - تحتاج إلى النقر بزر الماوس الأيمن ، والانتقال إلى القائمة الفرعية "صفحة X من Y" ، واختر Delete. كرر حتى تختفي جميع الصفحات :)

ربما تمت إضافة هذا إلى المصمم مؤخرًا ، لذلك قد لا تزال بحاجة إلى إزالتها من الكود إذا كان لديك إصدار سابق من QT.

الحديث عن الحفاظ على الأشياء داخل واجهة المستخدم ضد الاحتفاظ بها في الكود سأصوت لصالح "أكبر في ملف واجهة المستخدم قدر الإمكان" :)

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