반응형
📌 PySide6 QTabBar 완전 정복 – 탭 추가 감지 및 사용법
🔹 QTabBar란?
QTabBar는 탭을 관리하는 위젯으로, 여러 개의 콘텐츠를 한 공간에서 전환할 수 있도록 도와줍니다.
이 글에서는 QTabBar의 특징, 탭 추가/삭제 감지, 사용법, 활용 사례를 살펴보겠습니다.
1️⃣ QTabBar의 특징
✅ 주요 특징
특징 | 설명 |
탭 관리 | 여러 개의 탭을 추가하고 전환 가능 |
디자인 자유도 | QTabWidget보다 스타일을 자유롭게 조정 가능 |
탭 전환 가능 | setCurrentIndex()로 특정 탭 선택 가능 |
탭 추가/삭제 감지 | tabInserted() 및 tabRemoved() 메서드 활용 |
아이콘 및 닫기 버튼 추가 가능 | setTabIcon() 및 setTabsClosable(True) 사용 |
✅ QTabBar vs QTabWidget
비교 항목 | QTabBar | QTabWidget |
탭만 제공 | ✅ | ❌ (탭+페이지 관리) |
페이지 관리 | ❌ | ✅ |
자유로운 레이아웃 | ✅ | ❌ |
탭 추가/제거 가능 | ✅ | ✅ |
사용 예시 | 커스텀 탭 디자인이 필요한 경우 | 일반적인 탭 기반 UI |
2️⃣ QTabBar의 사용법
✅ 기본 사용법 (QTabBar 생성 및 탭 추가)
from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QTabBar
class TabBarExample(QWidget):
def __init__(self):
super().__init__()
self.tab_bar = QTabBar()
self.tab_bar.addTab("탭 1")
self.tab_bar.addTab("탭 2")
layout = QVBoxLayout()
layout.addWidget(self.tab_bar)
self.setLayout(layout)
self.setWindowTitle("QTabBar 예제")
self.resize(300, 100)
if __name__ == "__main__":
app = QApplication([])
window = TabBarExample()
window.show()
app.exec()
✅ 설명:
- QTabBar를 생성하고 addTab("탭 이름")으로 탭을 추가합니다.
- QVBoxLayout()을 사용하여 UI를 구성합니다.
- resize()를 이용해 창 크기를 조정합니다.
반응형
3️⃣ QTabBar의 탭 개수 확인 및 추가 감지
QTabBar에서 현재 탭 개수를 확인하려면 count() 메서드를 사용합니다.
또한 탭 추가/삭제를 감지하려면 tabInserted() 및 tabRemoved() 메서드를 오버라이드하면 됩니다.
✅ 탭 개수 확인 코드
from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QTabBar, QPushButton
class TabBarExample(QWidget):
def __init__(self):
super().__init__()
self.tab_bar = QTabBar()
self.add_btn = QPushButton("탭 추가")
self.remove_btn = QPushButton("마지막 탭 삭제")
# 탭 추가 및 초기화
self.tab_bar.addTab("탭 1")
self.tab_bar.addTab("탭 2")
# 버튼 클릭 시 탭 추가 / 삭제
self.add_btn.clicked.connect(self.add_tab)
self.remove_btn.clicked.connect(self.remove_tab)
# 레이아웃 구성
layout = QVBoxLayout()
layout.addWidget(self.tab_bar)
layout.addWidget(self.add_btn)
layout.addWidget(self.remove_btn)
self.setLayout(layout)
self.setWindowTitle("QTabBar 탭 개수 확인")
self.resize(300, 150)
def add_tab(self):
new_index = self.tab_bar.count()
self.tab_bar.addTab(f"탭 {new_index + 1}")
print(f"탭 추가됨! 현재 탭 개수: {self.tab_bar.count()}")
def remove_tab(self):
if self.tab_bar.count() > 0:
self.tab_bar.removeTab(self.tab_bar.count() - 1)
print(f"탭 삭제됨! 현재 탭 개수: {self.tab_bar.count()}")
if __name__ == "__main__":
app = QApplication([])
window = TabBarExample()
window.show()
app.exec()
✅ 설명:
- count()를 사용하여 현재 탭 개수 확인
- addTab()을 사용해 새로운 탭 추가
- removeTab()을 사용해 마지막 탭 삭제
- 버튼 클릭 시 동적으로 탭 추가/삭제
4️⃣ QTabBar의 활용 사례
📌 1. 설정 화면 (Settings UI)
- 설정 메뉴를 탭으로 관리
- QTabWidget을 사용하지 않고 자유롭게 스타일을 커스텀할 때 적합
📌 2. 브라우저 스타일 UI
- 크롬이나 파이어폭스처럼 탭을 자유롭게 추가/삭제 가능
- setTabsClosable(True)을 설정하여 닫기 버튼 활성화
📌 3. 다중 문서 인터페이스 (MDI)
- QTabBar를 활용하여 여러 개의 문서를 한 창에서 관리
- 예: 텍스트 편집기, 코드 에디터 등
5️⃣ QTabBar 주요 메서드 정리
메서드 | 설명 |
addTab("이름") | 새 탭 추가 |
removeTab(index) | 특정 인덱스의 탭 제거 |
count() | 현재 탭 개수 반환 |
setCurrentIndex(index) | 특정 탭을 활성화 |
tabText(index) | 특정 인덱스의 탭 이름 반환 |
setTabIcon(index, QIcon) | 탭에 아이콘 추가 |
setTabsClosable(True) | 닫기 버튼 활성화 |
🔹 결론
✅ QTabBar는 설정 화면, 브라우저 UI, 다중 문서 인터페이스(MDI) 등에서 활용할 수 있습니다.
✅ count()를 사용하면 현재 탭 개수를 쉽게 확인할 수 있습니다.
✅ tabInserted()와 tabRemoved()를 활용하면 탭이 추가되거나 삭제되는 이벤트를 감지할 수 있습니다.
✅ setTabsClosable(True)을 사용하면 닫기 버튼이 있는 탭 UI도 쉽게 만들 수 있습니다.
반응형
'코딩취미 > Python' 카테고리의 다른 글
PySide6로 파일 이동 및 압축하기 – ZIP, TAR, 7Z 압축을 활용한 GUI 프로그램 제작 (0) | 2025.02.27 |
---|---|
[파이썬, pyside6] MD5 해시란? MD5 해시를 생성하고 비교하는 방법 (0) | 2025.02.27 |
PySide6 QStackedWidget 완전 정복 – 클릭 이벤트와 사용법 (0) | 2025.02.26 |
PySide6 QScrollArea에서 스크롤바 제어하기 (0) | 2025.02.26 |
Python 딕셔너리 다루기: 키 추가, 검색, 삭제, 병합 방법 (0) | 2025.02.25 |