QTabWidget
에 공간을 절약하려면 현재 탭과 같은 닫기 아이콘 만 표시하고 싶습니다. 파이어 폭스는하고있다 : QTabWidget의 활성 탭에서만 닫기 버튼
QTabBar::tab::!selected::close-button {visible: false;}
를 (이런 식으로 작동하지 않는) 또는 내가 원하는 얻을 QTabWidget
를 서브 클래스해야합니까 같은 몇 가지 행동?
QTabWidget
에 공간을 절약하려면 현재 탭과 같은 닫기 아이콘 만 표시하고 싶습니다. 파이어 폭스는하고있다 : QTabWidget의 활성 탭에서만 닫기 버튼
QTabBar::tab::!selected::close-button {visible: false;}
를 (이런 식으로 작동하지 않는) 또는 내가 원하는 얻을 QTabWidget
를 서브 클래스해야합니까 같은 몇 가지 행동?
보호 방법 QTabWidget::tabBar
을 사용하여 QTabBar
위젯에 액세스하려면 서브 클래스 QTabWidget
을 사용할 수 있습니다. 그럼 당신은 수동으로하지 선택한 탭에 대한 닫기 버튼을 QTabBar::currentChanged
신호에 연결하고 숨길 수 있습니다 :
QTabBar::ButtonPosition closeSide =
(QTabBar::ButtonPosition)style()->styleHint(QStyle::SH_TabBar_CloseButtonPosition, 0, this);
for (int i = 0; i < toolbar->count(); ++i)
{
if (i != toolbar->currentIndex())
{
QWidget *w = toolbar->tabButton(i, closeSide);
w->hide();
}
}
당신은 아무것도 하위 클래스 필요가 없습니다, 당신은 탭 (예 : QTabBar *
를) 참조를 얻기 위해 QTabWidget::tabBar()
방법을 사용할 수 있습니다 바 (QTabWidget
)와 연결된 이제이 아닌 현재 탭에 tabBar
참조 에 숨기기 닫기 버튼을 사용할 수 있습니다
QTabBar *tabBar = tabWidget->tabBar();
(이 클래스를 서브 클래 싱없이 액세스 할 수 있도록,이 방법은 더 이상 이을 보호하지 않습니다). 예 i
번째 버튼을 숨길를 들어, 당신은 할 수 있습니다 : 다음과 같이
tabBar->tabButton(i, QTabBar::RightSide)->hide();
그래서 간단한 워크 플로우 수 :
QTabWidget::currentChanged(int index)
신호를 슬롯에.index
에있는 단추 이외의 모든 닫기 단추를 숨 깁니다.감사합니다. 실제로 버튼을 사라지게 만들 수 있습니다. 그러나 이것은 탭 너비를 수정하지 않습니다. 탭에 빈 공간이 있습니다 : https://i.imgur.com/7yO4Cmi.png. 그 공간을 되 찾는 방법을 생각해? –
'QTabWidget :: tabBar'는 더 이상 _protected_가 아닙니다. –
Qt 4.8에서는 그렇습니다. – hank