개발/Qt
[PyQt] QTreeView에서 각 아이템마다 다른 툴팁 설정하기
LifeCoding
2021. 11. 1. 15:00
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()