• 티스토리 홈
  • 프로필사진
    소쩍소쩍이
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
소쩍소쩍이
  • 프로필사진
    소쩍소쩍이
    • 분류 전체보기 (51) N
      • 파이썬 (18)
        • 문제 및 예제 (8)
      • PySide6 (15) N
        • Signal & Slot (6)
        • Layout (8)
        • Model & View (1) N
      • 리눅스 (5)
      • 아두이노 (0)
      • 일지 (11)
  • GitHub
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    # Home
    # 공지사항
    #
    # 태그
    # 검색결과
    # 방명록
    • QScrollArea
      2026년 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일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
    목차
    표시할 목차가 없습니다.
      • 안녕하세요
      • 감사해요
      • 잘있어요

      티스토리툴바