- QScrollArea2026년 05월 26일
- 소쩍소쩍이
- 작성자
- 2026.05.26.:26
QScrollArea / QListWidget / QTextEdit 정리
스크롤과 관련된 대표적인 위젯인 QScrollArea, QListWidget, QTextEdit를 정리하였다. 각 위젯은 모두 스크롤 기능과 관련이 있지만 사용 목적과 구조에는 차이가 있다.
QScrollArea : 직접 만든 위젯이나 복잡한 UI를 스크롤 형태로 관리할 때 사용
QListWidget : 목록 형태 데이터를 쉽게 관리할 때 사용
QTextEdit : 여러 줄 텍스트 입력 및 출력용으로 사용
QScrollArea
QScrollArea는 일반 위젯에 스크롤을 붙이는 방식이다. 직접 만든 QWidget을 넣고 내용이 커지면 자동으로 스크롤이 생성된다.
특징
• 안에 아무 위젯이나 넣을 수 있음
• 레이아웃 직접 구성 가능
• 복잡한 UI 제작 가능
사용 예시
• 설정 화면
• 카드형 UI
• 동적으로 위젯 추가from PySide6.QtWidgets import ( QWidget, QVBoxLayout, QScrollArea, QLabel, QPushButton ) from PySide6.QtCore import Qt class ScrollAreaTab(QWidget): def __init__(self, parent=None): super().__init__(parent) layout = QVBoxLayout(self) self.add_button = QPushButton("항목 추가") self.add_button.clicked.connect(self.add_item) layout.addWidget(self.add_button) # QScrollArea 사용 self.scroll_area = QScrollArea() self.scroll_area.setWidgetResizable(True) layout.addWidget(self.scroll_area) self.content_widget = QWidget() self.content_layout = QVBoxLayout(self.content_widget) self.content_layout.setAlignment(Qt.AlignTop) self.scroll_area.setWidget(self.content_widget) self.item_count = 0 for i in range(5): self.item_count += 1 self.add_label(f"기본 항목 {self.item_count}") def add_label(self, text): label = QLabel(text) self.content_layout.addWidget(label) def add_item(self): self.item_count += 1 new_text = f"추가 항목 {self.item_count}" self.add_label(new_text) print(new_text) # 항목 추가 시 자동으로 맨 아래로 스크롤 bar = self.scroll_area.verticalScrollBar() bar.setValue(bar.maximum())

QListWidget
QListWidget는 목록 전용 위젯이며 리스트 데이터를 쉽게 관리할 수 있다. 기본적으로 스크롤 기능이 포함되어 있다.
특징
• 리스트 관리가 쉬움
• 기본 스크롤 지원
• 선택 기능 내장
사용 예시
• 채팅 목록
• 파일 목록
• 메뉴 목록from PySide6.QtWidgets import ( QWidget, QVBoxLayout, QPushButton, QListWidget ) class ListWidgetTab(QWidget): def __init__(self, parent=None): super().__init__(parent) layout = QVBoxLayout(self) self.add_button = QPushButton("항목 추가") self.add_button.clicked.connect(self.add_item) layout.addWidget(self.add_button) self.list_widget = QListWidget() layout.addWidget(self.list_widget) self.item_count = 0 for i in range(10): self.list_widget.addItem(f"초기 항목 {i + 1}") self.item_count = 10 def add_item(self): self.item_count += 1 text = f"추가 항목 {self.item_count}" self.list_widget.addItem(text) print(text) self.list_widget.scrollToBottom()
QTextEdit
QTextEdit는 여러 줄 텍스트를 입력하거나 출력할 수 있는 위젯이다. 로그 출력이나 메모장 같은 기능을 만들 때 자주 사용된다.
특징
• 여러 줄 입력 가능
• 자동 스크롤 지원
• 텍스트 편집 가능
사용 예시
• 메모장
• 로그 출력
• 채팅 입력창from PySide6.QtWidgets import ( QWidget, QVBoxLayout, QPushButton, QTextEdit ) from PySide6.QtGui import QTextCursor class LogTextEditTab(QWidget): def __init__(self, parent=None): super().__init__(parent) layout = QVBoxLayout(self) self.log_textedit = QTextEdit() self.log_textedit.setReadOnly(True) layout.addWidget(self.log_textedit) self.log_button = QPushButton("로그 추가") self.log_button.clicked.connect(self.add_log) layout.addWidget(self.log_button) self.log_count = 0 def add_log(self): self.log_count += 1 message = f"[로그] {self.log_count}번째 메시지입니다." self.log_textedit.append(message) print(message) cursor = self.log_textedit.textCursor() cursor.movePosition(QTextCursor.End) self.log_textedit.setTextCursor(cursor) self.log_textedit.ensureCursorVisible()
widget.py
각각의 스크롤 예제를 하나의 QTabWidget으로 통합하였다. 탭을 변경하면서 각각의 스크롤 기능을 확인할 수 있다.
from PySide6.QtWidgets import QWidget, QVBoxLayout, QTabWidget from tab_scroll_area import ScrollAreaTab from tab_list_widget import ListWidgetTab from tab_log_textedit import LogTextEditTab class Widget(QWidget): def __init__(self, parent=None): super().__init__(parent) self.setWindowTitle("스크롤 예제 통합") self.resize(420, 340) layout = QVBoxLayout(self) self.tab_widget = QTabWidget() layout.addWidget(self.tab_widget) scroll_tab = ScrollAreaTab(self) list_tab = ListWidgetTab(self) log_tab = LogTextEditTab(self) self.tab_widget.addTab(scroll_tab, "스크롤 영역") self.tab_widget.addTab(list_tab, "리스트 스크롤") self.tab_widget.addTab(log_tab, "로그 스크롤")'PySide6 > Layout' 카테고리의 다른 글
주요 레이아웃 (0) 2026.05.26 QTabWidget (0) 2026.05.26 NestedLayout (0) 2026.05.26 QFormLayout (0) 2026.05.26 QGridLayout (0) 2026.05.26 다음글이전글이전 글이 없습니다.댓글
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)