2014-07-22 10 views
0

후속 조치 : Hide label text for Qt tabs without setting text to empty string :QTabBar 탭의 내부 QWidgets?

QTabBar의 탭에서 위젯에 직접 액세스 할 수 있습니까? 나는 이 아니고은 탭을 선택할 때 표시되는 해당 위젯을 의미하지만 탭의 위젯 (로그 레이블 및 로그 아이콘 아래의 스크린 샷)을 의미합니다.

TabBar

나는 QTabBar::findChildren을 시도하지만 성공했다. 어떤 생각?

+1

당신이'QTabBar :: tabButton()'와'QTabBar :: tabIcon()'기능을 시도해 봤어을? – vahancho

+0

'tabIcon'은 내가 수정할 수없는'const QIcon'을 제공합니다 - 전 완전히 새로운 아이콘을 설정할 수 있습니다. 'tabButton'은 항상'nullptr'을 반환합니다 : 왼쪽과 오른쪽이있는'QWidget * w = this-> m_tabBar-> tabButton (0, QTabBar :: RightSide); –

답변

1

QTabBar 헤더 섹션은 실제로 위젯이 아닙니다. 그들은 QStylePainter 안에 QTabBar::paintEvent 안에 그려집니다. 따라서 당신은 그들에게 접근 할 수 없습니다. 해결 방법으로 비어있는 텍스트 탭을 추가하고에 사용자 정의 위젯을 설정할 수 있습니다

QTabBar *bar = new QTabBar; 
bar->addTab(""); 

QLabel *label = new QLabel("my label"); 
bar->setTabButton(0, QTabBar::LeftSide, label); 
+0

잘 작동합니다.주의해야합니다. 그러나 탭의 빈 텍스트라도 일부 공간을 사용합니다. 그래서 나는 의도하지 않은 공간을 남겼습니다. –

+0

스타일 시트를 사용하여 최소 너비 및 패딩 속성을 사용하여 조정할 수 있어야한다고 생각합니다. – Albert