2013-08-23 2 views
2

5 개의 하위 탭이 포함 된 QTabWidget이 있다고 가정합니다. 이제 코드를 따라 5 개의 하위 탭 중 하나에 하위 탭을 표시하거나 숨기려고합니다.QTabWidget의 하위 탭 표시/숨기기

ui->twListTabs->widget(0)->hide();   // Hide first sub-tab 

그러나 이것은 나에게 적합하지 않습니다. 어떤 해결책이 있습니까?

감사합니다. 당신은 당신이 나중에 삽입 할 수 있도록 탭에서는 QWidget 포인터를 저장해야

void QTabWidget::removeTab(int index) 

:

답변

6

는 만 사용하는 옵션이 있습니다.

예 :

class TabWidget : public QTabWidget 
{ 
    Q_OBJECT 

     enum tabwidgets {tabwidget1,tabwidget2,...,number_of_tabwidgets}; 
     QWidget* widgets_[number_of_tabwidgets]; 
    public: 
     TabWidget(QWidget* parent=0) 
     : QWidget(parent) 
     { 
     for(int i(0);i<number_of_tabwidgets;++i) 
    { 
     switch(i) 
     { 
      case tabwidget1: 
       insertTab(i,widgets_[i]=new TabWidget1,QString::number(i)); 
      .... 
     } 
    } 
     } 
}; 
+0

Qt Creator의 UI 디자이너에이 탭이 있으면이 복잡성이 필요 없습니다. 'removeTab'을 사용하고 나중에 그것을 다시 추가하기 위해서'findChild' 함수를 사용하여 탭을 끌어 올뿐입니다 (탭 위젯에서 제거 된 후에도 여전히 UI 객체가 관리합니다). 2011 년 8 월 12 일자 논평보기 : http://www.qtcentre.org/threads/16505-Hiding-a-tab-in-QTabBar-widget?p=200059#post200059 (6 년 후 저에게 도움이됩니다.). –

+0

@ Dan Nissenbaum 네, 코딩 스타일의 문제입니다. 다양한 gui 컨트롤에 대한 포인터를 저장하는 코드가 많이 있지만 findChild를 많이 사용하기 시작했습니다. 또한 C++ 11에서 사용할 수있는 lambda 콜백은 포인터를 저장할 필요성을 줄여줍니다. – user2672165

관련 문제