QTreeView의 아이템에 마우스를 올리면, 각 아이템 별로 다른 말풍선(툴팁)이 보여지도록 합니다.
결과 화면 :
소스 코드 :
- 다이얼로그에 QTreeView를 생성합니다.
- 모델을 생성해서, treeView에 연결합니다. (아래에서는 QStandardItemModel을 사용)
- 모델에 아이템을 추가할 때, QStandardItem을 상속받은 TreeItem 클래스를 정의해서 사용합니다.
- TreeItem 생성 시, 인자로 아이템에 입력할 데이터와, 툴팁 정보를 받음
- item에 입력받은 데이터와 툴팁을 설정함
# qt/treeview/TreeView.py
from PyQt5.QtWidgets import QDialog, QTreeView
from PyQt5.QtGui import QStandardItem, QStandardItemModel
class TreeViewDialog(QDialog):
def __init__(self):
QDialog.__init__(self)
self.treeView = QTreeView(self)
self.model = QStandardItemModel()
self.treeView.setModel(self.model)
self.treeView.setHeaderHidden(True)
rootParentItem = self.model.invisibleRootItem()
# Add first item and it's children
item = self.appendChild("category 1", rootParentItem, 'tooltip 1')
for i in range(3):
self.appendChild('a {}'.format(i), item, 'a tooltip {}'.format(i))
# Add second item and it's children
item = self.appendChild("category 2", rootParentItem, 'tooltip 1')
for i in range(3):
self.appendChild('b {}'.format(i), item, 'b tooltip {}'.format(i))
self.treeView.setCurrentIndex(self.model.index(0, 0))
self.treeView.expandAll()
self.resize(400,200)
def appendChild(self, title, parentItem, toolTip = None):
item = TreeItem(title, toolTip)
item.setData(title)
parentItem.appendRow(item)
return item
class TreeItem(QStandardItem):
def __init__(self, text, toolTip):
QStandardItem.__init__(self)
self.setText(text)
self.setToolTip(toolTip)
4. 위 다이얼로그 실행을 위한 메인 파일
# main.py
from qt.treeview.TreeView import *
import sys
def start():
app = QApplication(sys.argv)
treeview = TreeViewDialog()
treeview.show()
sys.exit(app.exec_())
if __name__ == '__main__':
start()
'개발 > Qt' 카테고리의 다른 글
[PyQt] StyleSheet 사용해서 QComboBox 색상 변경 (0) | 2021.11.06 |
---|---|
[PyQt] 트리 뷰(QTreeView)에 콤보박스(QComboBox) 추가하기 (0) | 2021.11.03 |
[PyQt] 파일에서 데이터 읽어 테이블로 보여주기(QTableWidget) (0) | 2021.10.30 |
[PyQt] 스크롤 가능한 영역(ScrollArea)에 사진 추가하기 (0) | 2021.10.28 |
[PyQt] Python에서 QTabWidget(탭 위젯) 사용하기 (0) | 2021.10.26 |