본문 바로가기
코딩취미/Python

PySide6 QComboBox 아이템 우측 정렬 적용 방법

by 브링블링 2025. 2. 18.
반응형

PySide6 QComboBox 아이템 우측 정렬 적용 방법

이번 포스팅에서는 PySide6를 사용하여 QComboBox 위젯에 추가된 아이템들이 드롭다운 목록에서 우측 정렬되도록 설정하는 두 가지 방법을 소개합니다. 또한, QComboBox가 편집 가능(editable) 할 경우 라인 에디터의 텍스트 정렬을 변경하는 방법도 함께 다룹니다.

 

목차

  • 방법 1: 모델 데이터를 이용한 아이템 정렬 설정
  • 방법 2: 편집 가능한 QComboBox에서 라인 에디터 정렬 변경
  • 비교 테이블
  • 필요 사항

방법 1: 모델 데이터를 이용한 아이템 정렬 설정

이 방법은 QComboBox 내부의 모델에 접근하여 각 아이템의 Qt.TextAlignmentRole 데이터를 Qt.AlignRight로 설정하는 방식입니다.

import sys
from PySide6.QtWidgets import QApplication, QComboBox, QVBoxLayout, QWidget, QMainWindow
from PySide6.QtCore import Qt

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("우측 정렬 QComboBox 예제")
        
        # 중앙 위젯 및 레이아웃 설정
        central_widget = QWidget()
        self.setCentralWidget(central_widget)
        layout = QVBoxLayout(central_widget)
        
        # QComboBox 생성 및 아이템 추가
        self.combo_box = QComboBox()
        self.combo_box.addItems(["Option 1", "Option 2", "Option 3"])
        layout.addWidget(self.combo_box)
        
        # QComboBox의 모델에 접근하여 각 아이템을 우측 정렬로 설정
        model = self.combo_box.model()
        for i in range(self.combo_box.count()):
            index = model.index(i, 0)
            model.setData(index, Qt.AlignRight, Qt.TextAlignmentRole)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec())
반응형

방법 2: 편집 가능한 QComboBox에서 라인 에디터 정렬 변경

편집 가능한 QComboBox를 사용하는 경우, 드롭다운 목록뿐만 아니라 현재 선택된 텍스트(라인 에디터)도 우측 정렬할 수 있습니다.

import sys
from PySide6.QtWidgets import QApplication, QComboBox, QVBoxLayout, QWidget, QMainWindow
from PySide6.QtCore import Qt

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("편집 가능한 QComboBox 우측 정렬 예제")
        
        # 중앙 위젯 및 레이아웃 설정
        central_widget = QWidget()
        self.setCentralWidget(central_widget)
        layout = QVBoxLayout(central_widget)
        
        # 편집 가능한 QComboBox 생성 및 아이템 추가
        self.combo_box = QComboBox()
        self.combo_box.setEditable(True)  # 편집 가능하도록 설정
        self.combo_box.addItems(["Option 1", "Option 2", "Option 3"])
        layout.addWidget(self.combo_box)
        
        # 드롭다운 아이템들을 우측 정렬로 설정
        model = self.combo_box.model()
        for i in range(self.combo_box.count()):
            index = model.index(i, 0)
            model.setData(index, Qt.AlignRight, Qt.TextAlignmentRole)
        
        # 현재 선택된 텍스트(라인 에디터)의 우측 정렬 설정
        self.combo_box.lineEdit().setAlignment(Qt.AlignRight)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec())

비교 테이블

방법 설명 적용 대상
모델 데이터 이용 QComboBox 내부 모델을 통해 각 아이템의 정렬 데이터를 변경 기본 QComboBox 아이템
편집 가능한 QComboBox QComboBox를 편집 가능하게 설정한 후, 라인 에디터의 텍스트 정렬을 변경 드롭다운 목록 및 라인 에디터 텍스트
반응형