إخفاء علامة تبويب تمت إضافتها مسبقًا إلى QT TabWidget

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

  •  03-07-2019
  •  | 
  •  

سؤال

لدي مربع حوار يحتوي على QT tabWidget مع عدد من علامات التبويب المضافة.

أود إخفاء إحدى علامات التبويب.

_mytab->hide() 

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

أنا أستخدم QT 3.3

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

المحلول

أود استخدام qtabdialog :: removePage (QWidget* ptabpage) الذي لا يحذف ptabpage ، وهو ما تريده.

_myTabDlg->removePage(_mytab);

أنا أستخدمه وهو يعمل بشكل جيد!

نصائح أخرى

لقد واجهت نفس المشكلة. أنا أستخدم النهج التالي.

الآن هنا هي البيانات.

Gentab هو اسم qtabwidget

Tabx هو اسم علامة التبويب التي أريد إزالتها.

(لاحظ أن هذه هي علامة التبويب الثانية في أداة TAB. وبالتالي ، سأستخدم "1" كفهرس للإشارة إلى علامة التبويب هذه)

الكود لإزالته وإضافته كما هو موضح أدناه.

ui.genTab->removeTab(1); // removes the tab at the index 1 which is the second tab from left


ui.genTab->insertTab(1, ui.tabX, "<Name of TabX>"); // The tab is added back.

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

ومع ذلك ، إذا قمت بإضافة علامات التبويب ديناميكيًا ، فربما يتعين عليك الحفاظ على علامات التبويب في قائمة ثم لديك قائمة أخرى لـ DELETEDTABS.

لكن الحل الأول على الأرجح سيعمل من أجلك. أتمنى أن يساعدك هذا.

-أرجون

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