- QHeaderView란 무엇인가?
- QHeaderView의 기본 사용법
- ResizeMode 설정하기
- 헤더 스타일 커스터마이징
- 헤더 정렬 및 소팅 기능 구현
- 헤더 섹션 숨기기와 이동하기
- 헤더 컨텍스트 메뉴 추가하기
- 자주 발생하는 문제와 해결 방법
- 마무리
QHeaderView란 무엇인가?
QHeaderView는 PySide6에서 테이블의 행과 열 헤더를 관리하는 위젯입니다.
테이블에서 가장 위쪽에 있는 열 이름들과 가장 왼쪽에 있는 행 번호들이 바로 QHeaderView를 통해 표시됩니다.
엑셀을 생각해보세요! 엑셀에서 A, B, C... 로 표시되는 열 이름들과 1, 2, 3... 으로 표시되는 행 번호들이 있습니다. PySide6에서는 이 부분을 QHeaderView라는 특별한 위젯으로 관리합니다.
QHeaderView는 단순히 헤더를 표시하는 것 외에도 다양한 기능을 제공합니다:
1. 열/행 크기 조절
2. 열/행 정렬 및 소팅
3. 헤더 스타일 커스터마이징
4. 헤더 섹션 숨기기/보이기
5. 헤더 섹션 이동 (드래그 앤 드롭)
QHeaderView는 주로 QTableView, QTableWidget, QTreeView와 같은 테이블 형태의 위젯과 함께 사용됩니다.
이러한 위젯들은 horizontalHeader()와 verticalHeader() 메서드를 통해 QHeaderView 객체에 접근할 수 있게 해줍니다.
QHeaderView의 기본 사용법
QHeaderView를 사용하기 위해서는
먼저 QTableWidget이나 QTableView와 같은 테이블 위젯이 필요합니다.
다음은 PySide6에서 QHeaderView의 기본적인 사용법을 보여주는 예제입니다:
import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem
from PySide6.QtCore import Qt
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("QHeaderView 기본 예제")
self.setGeometry(100, 100, 600, 400)
# QTableWidget 생성
self.table = QTableWidget(self)
self.table.setRowCount(5)
self.table.setColumnCount(3)
self.setCentralWidget(self.table)
# 테이블에 데이터 추가
for row in range(5):
for col in range(3):
self.table.setItem(row, col, QTableWidgetItem(f"항목 {row+1}-{col+1}"))
# 열 헤더 텍스트 설정
self.table.setHorizontalHeaderLabels(["이름", "나이", "직업"])
# 행 헤더 텍스트 설정
self.table.setVerticalHeaderLabels(["행 1", "행 2", "행 3", "행 4", "행 5"])
# QHeaderView 객체 가져오기
horizontal_header = self.table.horizontalHeader()
vertical_header = self.table.verticalHeader()
# 헤더 기본 설정
horizontal_header.setHighlightSections(True) # 선택 시 헤더 강조 표시
horizontal_header.setStretchLastSection(True) # 마지막 열을 테이블 너비에 맞게 늘림
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
이 코드는 3개의 열과 5개의 행을 가진 기본 테이블을 생성하고,
열 헤더와 행 헤더의 텍스트를 설정합니다. 또한 QHeaderView의 몇 가지 기본 설정을 보여줍니다.
QHeaderView 객체 가져오기
QTableWidget이나 QTableView에서 QHeaderView 객체에 접근하는 방법은 다음과 같습니다:
# 수평(열) 헤더 가져오기
horizontal_header = table.horizontalHeader()
# 수직(행) 헤더 가져오기
vertical_header = table.verticalHeader()
이렇게 가져온 QHeaderView 객체를 통해 헤더의 다양한 속성과 동작을 설정할 수 있습니다.
ResizeMode 설정하기
QHeaderView에서 가장 중요한 기능 중 하나는
열(또는 행)의 크기 조절 방식을 설정하는 것입니다.
이를 위해 setSectionResizeMode() 메서드를 사용합니다.
ResizeMode 종류
PySide6의 QHeaderView는 다음과 같은 ResizeMode를 제공합니다:
1. QHeaderView.Interactive: 사용자가 마우스로 헤더 경계를 드래그하여 크기를 조절할 수 있습니다.
2. QHeaderView.Stretch: 테이블의 전체 너비(또는 높이)에 맞게 섹션이 자동으로 늘어납니다.
3. QHeaderView.Fixed: 섹션 크기가 고정되며, 사용자나 자동 조절에 의해 변경되지 않습니다.
4. QHeaderView.ResizeToContents: 섹션의 내용에 맞게 자동으로 크기가 조절됩니다.
ResizeMode는 테이블 열이 어떻게 크기가 조절되는지를 결정합니다:
- Interactive: "사용자가 마우스로 조절할 수 있어요!"
- Stretch: "테이블 크기가 변하면 자동으로 늘어나거나 줄어들어요!"
- Fixed: "크기가 고정되어 있어요, 바꿀 수 없어요!"
- ResizeToContents: "내용물에 맞춰서 자동으로 크기가 정해져요!"
ResizeMode 설정 예제
다음은 다양한 ResizeMode를 설정하는 예제입니다:
import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QHeaderView
from PySide6.QtCore import Qt
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("QHeaderView ResizeMode 예제")
self.setGeometry(100, 100, 600, 400)
# QTableWidget 생성
self.table = QTableWidget(self)
self.table.setRowCount(5)
self.table.setColumnCount(4)
self.setCentralWidget(self.table)
# 테이블에 데이터 추가
for row in range(5):
for col in range(4):
self.table.setItem(row, col, QTableWidgetItem(f"항목 {row+1}-{col+1}"))
# 열 헤더 텍스트 설정
self.table.setHorizontalHeaderLabels(["Interactive", "Stretch", "Fixed", "ResizeToContents"])
# QHeaderView 객체 가져오기
header = self.table.horizontalHeader()
# 각 열에 다른 ResizeMode 설정
header.setSectionResizeMode(0, QHeaderView.Interactive) # 첫 번째 열: 사용자 조절 가능
header.setSectionResizeMode(1, QHeaderView.Stretch) # 두 번째 열: 자동 늘림
header.setSectionResizeMode(2, QHeaderView.Fixed) # 세 번째 열: 고정 크기
header.setSectionResizeMode(3, QHeaderView.ResizeToContents) # 네 번째 열: 내용에 맞춤
# Fixed 모드인 열의 너비 설정
self.table.setColumnWidth(2, 100) # 세 번째 열의 너비를 100픽셀로 설정
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
이 예제는 네 개의 열에 각각 다른 ResizeMode를 적용하여 그 차이를 보여줍니다.
모든 열에 동일한 ResizeMode 적용하기
모든 열에 동일한 ResizeMode를 적용하려면 다음과 같이 할 수 있습니다:
# 모든 열을 Interactive 모드로 설정
header.setSectionResizeMode(QHeaderView.Interactive)
# 모든 열을 내용에 맞게 자동 조절
header.setSectionResizeMode(QHeaderView.ResizeToContents)
헤더 스타일 커스터마이징
QHeaderView의 모양을 커스터마이징하여 테이블의 시각적 매력을 높일 수 있습니다.
다음은 헤더 스타일을 변경하는 몇 가지 방법입니다.
스타일시트(CSS) 적용하기
PySide6에서는 스타일시트(CSS)를 사용하여 헤더의 모양을 쉽게 변경할 수 있습니다:
import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem
from PySide6.QtCore import Qt
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("QHeaderView 스타일 예제")
self.setGeometry(100, 100, 600, 400)
# QTableWidget 생성
self.table = QTableWidget(self)
self.table.setRowCount(5)
self.table.setColumnCount(3)
self.setCentralWidget(self.table)
# 테이블에 데이터 추가
for row in range(5):
for col in range(3):
self.table.setItem(row, col, QTableWidgetItem(f"항목 {row+1}-{col+1}"))
# 열 헤더 텍스트 설정
self.table.setHorizontalHeaderLabels(["이름", "나이", "직업"])
# 스타일시트 적용
self.table.horizontalHeader().setStyleSheet("""
QHeaderView::section {
background-color: #4a86e8;
color: white;
padding: 6px;
border: 1px solid #3a7bd5;
font-weight: bold;
border-radius: 0px;
text-align: center;
}
QHeaderView::section:hover {
background-color: #3a7bd5;
}
""")
# 행 헤더에도 스타일 적용
self.table.verticalHeader().setStyleSheet("""
QHeaderView::section {
background-color: #f1f1f1;
padding: 4px;
border: 1px solid #d4d4d4;
font-weight: normal;
}
""")
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
이 예제는 열 헤더에 파란색 배경과 흰색 텍스트를 적용하고, 행 헤더에는 회색 배경을 적용합니다.
헤더 글꼴 변경하기
헤더의 글꼴을 변경하려면 다음과 같이 할 수 있습니다:
from PySide6.QtGui import QFont
# 헤더 글꼴 설정
font = QFont("Arial", 10, QFont.Bold)
self.table.horizontalHeader().setFont(font)
헤더 높이/너비 설정하기
헤더의 높이나 너비를 명시적으로 설정할 수 있습니다:
# 열 헤더의 높이 설정
self.table.horizontalHeader().setFixedHeight(40)
# 행 헤더의 너비 설정
self.table.verticalHeader().setFixedWidth(60)
헤더 정렬 및 소팅 기능 구현
QHeaderView는 테이블 데이터를 정렬하는 기능을 제공합니다.
헤더를 클릭하면 해당 열을 기준으로 데이터를 정렬할 수 있습니다.
소팅 활성화하기
테이블에서 소팅 기능을 활성화하는 방법은 다음과 같습니다:
import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem
from PySide6.QtCore import Qt
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("QHeaderView 소팅 예제")
self.setGeometry(100, 100, 600, 400)
# QTableWidget 생성
self.table = QTableWidget(self)
self.table.setRowCount(5)
self.table.setColumnCount(3)
self.setCentralWidget(self.table)
# 테이블에 데이터 추가
data = [
["김철수", "28", "개발자"],
["이영희", "25", "디자이너"],
["박민수", "32", "관리자"],
["정지원", "22", "학생"],
["최동욱", "30", "마케터"]
]
for row, row_data in enumerate(data):
for col, value in enumerate(row_data):
self.table.setItem(row, col, QTableWidgetItem(value))
# 열 헤더 텍스트 설정
self.table.setHorizontalHeaderLabels(["이름", "나이", "직업"])
# 소팅 활성화
self.table.setSortingEnabled(True)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
이 예제에서는 `setSortingEnabled(True)`를 호출하여 테이블의 소팅 기능을 활성화합니다.
이제 헤더를 클릭하면 해당 열을 기준으로 데이터가 정렬됩니다.
소팅을 활성화할 때는 데이터를 모두 추가한 후에
setSortingEnabled(True)
를 호출하는 것이 좋습니다. 소팅이 활성화된 상태에서 데이터를 추가하면 행 순서가 자동으로 변경될 수 있어 의도치 않은 결과가 발생할 수 있습니다.커스텀 소팅 구현하기
숫자나 날짜와 같은 특별한 데이터 타입에 대해 커스텀 소팅을 구현할 수 있습니다:
import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem
from PySide6.QtCore import Qt
class NumericTableWidgetItem(QTableWidgetItem):
def __lt__(self, other):
# 숫자로 변환하여 비교
return float(self.text()) < float(other.text())
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("QHeaderView 커스텀 소팅 예제")
self.setGeometry(100, 100, 600, 400)
# QTableWidget 생성
self.table = QTableWidget(self)
self.table.setRowCount(5)
self.table.setColumnCount(3)
self.setCentralWidget(self.table)
# 테이블에 데이터 추가
data = [
["김철수", "28", "개발자"],
["이영희", "25", "디자이너"],
["박민수", "32", "관리자"],
["정지원", "22", "학생"],
["최동욱", "30", "마케터"]
]
for row, row_data in enumerate(data):
for col, value in enumerate(row_data):
if col == 1: # 나이 열은 NumericTableWidgetItem 사용
self.table.setItem(row, col, NumericTableWidgetItem(value))
else:
self.table.setItem(row, col, QTableWidgetItem(value))
# 열 헤더 텍스트 설정
self.table.setHorizontalHeaderLabels(["이름", "나이", "직업"])
# 소팅 활성화
self.table.setSortingEnabled(True)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
이 예제에서는 `NumericTableWidgetItem` 클래스를 정의하여
"나이" 열이 텍스트가 아닌 숫자로 정렬되도록 합니다.
헤더 섹션 숨기기와 이동하기
QHeaderView는 헤더 섹션을 숨기거나 이동시키는 기능도 제공합니다.
헤더 섹션 숨기기
특정 열이나 행의 헤더를 숨기려면 다음과 같이 할 수 있습니다:
# 특정 열 헤더 숨기기
self.table.horizontalHeader().hideSection(1) # 두 번째 열 헤더 숨기기
# 특정 행 헤더 숨기기
self.table.verticalHeader().hideSection(0) # 첫 번째 행 헤더 숨기기
# 전체 행 헤더 숨기기
self.table.verticalHeader().setVisible(False)
헤더 섹션 이동 활성화 (계속)
# 행 헤더 이동 활성화
self.table.verticalHeader().setSectionsMovable(True)
다음은 헤더 섹션 이동을 활성화하는 전체 예제입니다:
import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem
from PySide6.QtCore import Qt
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("헤더 섹션 이동 예제")
self.setGeometry(100, 100, 600, 400)
# QTableWidget 생성
self.table = QTableWidget(self)
self.table.setRowCount(5)
self.table.setColumnCount(4)
self.setCentralWidget(self.table)
# 테이블에 데이터 추가
for row in range(5):
for col in range(4):
self.table.setItem(row, col, QTableWidgetItem(f"항목 {row+1}-{col+1}"))
# 열 헤더 텍스트 설정
self.table.setHorizontalHeaderLabels(["이름", "나이", "직업", "주소"])
# 헤더 섹션 이동 활성화
self.table.horizontalHeader().setSectionsMovable(True)
# 이동 가능함을 알려주는 툴팁 추가
self.table.horizontalHeader().setToolTip("헤더를 드래그하여 열 순서를 변경할 수 있습니다")
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
이 예제에서는 열 헤더를 드래그하여 순서를 변경할 수 있습니다.
사용자에게 이 기능을 알려주기 위해 툴팁도 추가했습니다.
헤더 섹션 순서 변경 감지하기
헤더 섹션의 순서가 변경되었을 때 이를 감지하고 처리하려면 sectionMoved 시그널을 연결합니다:
# 헤더 섹션 이동 감지
self.table.horizontalHeader().sectionMoved.connect(self.on_section_moved)
def on_section_moved(self, logical_index, old_visual_index, new_visual_index):
print(f"열 이동: 논리적 인덱스 {logical_index}가 시각적 위치 {old_visual_index}에서 {new_visual_index}로 이동됨")
# 여기에 필요한 처리 추가
헤더 컨텍스트 메뉴 추가하기
헤더에 우클릭 컨텍스트 메뉴를 추가하여 사용자가 열을 숨기거나 표시할 수 있는 기능을 구현할 수 있습니다.
import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QMenu, QAction
from PySide6.QtCore import Qt
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("헤더 컨텍스트 메뉴 예제")
self.setGeometry(100, 100, 600, 400)
# QTableWidget 생성
self.table = QTableWidget(self)
self.table.setRowCount(5)
self.table.setColumnCount(4)
self.setCentralWidget(self.table)
# 테이블에 데이터 추가
for row in range(5):
for col in range(4):
self.table.setItem(row, col, QTableWidgetItem(f"항목 {row+1}-{col+1}"))
# 열 헤더 텍스트 설정
self.column_names = ["이름", "나이", "직업", "주소"]
self.table.setHorizontalHeaderLabels(self.column_names)
# 헤더 컨텍스트 메뉴 설정
self.table.horizontalHeader().setContextMenuPolicy(Qt.CustomContextMenu)
self.table.horizontalHeader().customContextMenuRequested.connect(self.show_header_menu)
def show_header_menu(self, pos):
header = self.table.horizontalHeader()
# 컨텍스트 메뉴 생성
menu = QMenu(self)
# 각 열에 대한 표시/숨기기 액션 추가
for col in range(self.table.columnCount()):
column_name = self.column_names[col]
is_hidden = header.isSectionHidden(col)
action = QAction(column_name, self)
action.setCheckable(True)
action.setChecked(not is_hidden)
action.setData(col)
action.triggered.connect(self.toggle_column_visibility)
menu.addAction(action)
# 컨텍스트 메뉴 표시
menu.exec(header.mapToGlobal(pos))
def toggle_column_visibility(self):
action = self.sender()
if action:
col = action.data()
is_checked = action.isChecked()
self.table.horizontalHeader().setSectionHidden(col, not is_checked)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
이 예제는 헤더에서 우클릭하면 컨텍스트 메뉴가 나타나고,
각 열을 표시하거나 숨길 수 있는 체크박스 메뉴 항목을 제공합니다.
컨텍스트 메뉴란 마우스 우클릭 시 나타나는 메뉴를 말합니다. 위 예제에서는 헤더에서 우클릭하면 각 열을 표시하거나 숨길 수 있는 메뉴가 나타납니다. 이렇게 하면 사용자가 필요한 열만 선택적으로 볼 수 있어 테이블을 더 효율적으로 사용할 수 있습니다.
자주 발생하는 문제와 해결 방법
QHeaderView를 사용할 때 자주 발생하는 문제와 해결 방법을 살펴보겠습니다.
문제 1: Stretch 모드에서 열 너비를 수동으로 조절할 수 없음
문제: QHeaderView.Stretch 모드를 사용하면 테이블이 전체 너비를 채우지만, 사용자가 열 너비를 수동으로 조절할 수 없습니다.
해결 방법: 처음에는 Stretch 모드를 사용하고, 나중에 Interactive 모드로 전환하는 방법을 사용할 수 있습니다:
import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QHeaderView
from PySide6.QtCore import Qt, QTimer
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Stretch 후 Interactive 모드 예제")
self.setGeometry(100, 100, 600, 400)
# QTableWidget 생성
self.table = QTableWidget(self)
self.table.setRowCount(5)
self.table.setColumnCount(3)
self.setCentralWidget(self.table)
# 테이블에 데이터 추가
for row in range(5):
for col in range(3):
self.table.setItem(row, col, QTableWidgetItem(f"항목 {row+1}-{col+1}"))
# 열 헤더 텍스트 설정
self.table.setHorizontalHeaderLabels(["이름", "나이", "직업"])
# 먼저 Stretch 모드 설정
self.table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
# 약간의 지연 후 Interactive 모드로 전환
QTimer.singleShot(100, self.make_columns_interactive)
def make_columns_interactive(self):
header = self.table.horizontalHeader()
# 현재 각 열의 너비를 저장
column_widths = []
for i in range(self.table.columnCount()):
column_widths.append(self.table.columnWidth(i))
# 모든 열을 Interactive 모드로 변경
for i in range(self.table.columnCount()):
header.setSectionResizeMode(i, QHeaderView.Interactive)
# 저장해둔 너비를 다시 적용
for i, width in enumerate(column_widths):
self.table.setColumnWidth(i, width)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
문제 2: 헤더 텍스트가 잘림
문제: 헤더 텍스트가 너무 길어서 잘리는 경우가 있습니다.
해결 방법: 헤더에 툴팁을 추가하고 ResizeToContents 모드를 사용하거나 최소 너비를 설정합니다:
# 헤더에 툴팁 추가
for col in range(self.table.columnCount()):
header_item = self.table.horizontalHeaderItem(col)
if header_item:
header_item.setToolTip(header_item.text())
# ResizeToContents 모드 사용
self.table.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeToContents)
# 또는 최소 너비 설정
self.table.horizontalHeader().setMinimumSectionSize(100)
문제 3: 헤더 클릭 이벤트 처리
문제: 헤더 클릭 이벤트를 처리하고 싶지만 소팅 기능은 비활성화하고 싶은 경우.
해결 방법: sectionClicked 시그널을 연결하고 소팅을 비활성화합니다:
# 소팅 비활성화
self.table.setSortingEnabled(False)
# 헤더 클릭 이벤트 연결
self.table.horizontalHeader().sectionClicked.connect(self.on_header_clicked)
def on_header_clicked(self, logical_index):
print(f"헤더 클릭됨: {logical_index}")
# 여기에 원하는 처리 추가
마무리
이 글에서는 PySide6의 QHeaderView를 사용하여
테이블 헤더를 커스터마이징하는 다양한 방법을 알아보았습니다.
QHeaderView는 테이블의 시각적 표현과 사용자 상호작용을 향상시키는 데 중요한 역할을 합니다.
주요 내용을 요약하면 다음과 같습니다:
1. QHeaderView 기본 사용법: QTableWidget이나 QTableView의 horizontalHeader()와 verticalHeader() 메서드를 통해 QHeaderView 객체에 접근할 수 있습니다.
2. ResizeMode 설정: Interactive, Stretch, Fixed, ResizeToContents 등 다양한 ResizeMode를 사용하여 열 너비 조절 방식을 설정할 수 있습니다.
3. 헤더 스타일 커스터마이징: 스타일시트(CSS)를 사용하여 헤더의 모양을 변경할 수 있습니다.
4. 헤더 정렬 및 소팅: setSortingEnabled() 메서드를 사용하여 테이블 데이터 정렬 기능을 활성화할 수 있습니다.
5. 헤더 섹션 숨기기와 이동: hideSection() 메서드로 특정 열이나 행을 숨기고, setSectionsMovable() 메서드로 헤더 섹션 이동을 활성화할 수 있습니다.
6. 헤더 컨텍스트 메뉴: 우클릭 컨텍스트 메뉴를 추가하여 사용자가 열을 숨기거나 표시할 수 있는 기능을 구현할 수 있습니다.
QHeaderView를 잘 활용하면 사용자에게 더 나은 테이블 경험을 제공할 수 있습니다. 특히 데이터가 많은 테이블에서는 열 너비 조절, 정렬, 숨기기 등의 기능이 매우 유용합니다.
QHeaderView를 처음 사용한다면 다음 순서로 시작해보세요:
1. 기본 테이블 생성 후
horizontalHeader()
로 헤더 객체 가져오기2.
setSectionResizeMode()
로 열 너비 조절 방식 설정하기3.
setStyleSheet()
로 헤더 스타일 변경하기4.
setSortingEnabled(True)
로 정렬 기능 활성화하기이렇게 하면 기본적인 QHeaderView 기능을 쉽게 활용할 수 있습니다!
[ 파이썬 관련 블로그 글 목록 ]
파이썬(Python) 블로그 목록
'PYTHON GUI' 카테고리의 다른 글
파이썬 GUI 프로그램에서 응답없음 해결하기 - 스레드 활용법 (1) | 2025.07.01 |
---|---|
[ PySide6 ] 천 단위 쉼표 자동 추가 QLineEdit 만들기 (2) | 2025.06.01 |
[ Pyside6 ] QStandardItemModel로 데이터 테이블 쉽게 만들기 (0) | 2025.05.26 |
[ PySide6 ] QTableWidget 열 너비 자동 조절 후 마우스로 수동 조절하는 방법 (0) | 2025.05.24 |
[ PySide6 ] QTableWidget에 체크박스 추가하는 방법 (1) | 2025.05.22 |