CopyWithLog을 만들어 보았습니다.

3820 단어 PySidePyQt
PyQt5를 사용했지만 아마 PySide도 통용될 것 같아서 라벨을 등록했습니다.
로그를 복사하고 생성하는 GUI

inon3135/CopyWithLog
드래그 앤 드롭된 파일을 복제하고 복제 대상/원래 위치에 로그 파일을 만드는 소프트웨어입니다.
자기도 비망록을 겸한 일을 썼다.
DragDrop에서 설정한 주의점
다른 기사도 뷰, 모델,widget에 대한 DragDrop 설정을 썼다.
widget->View->model->item 순서대로 끼워넣기 구조 (그림)
여기,view,model을 지정한 경우view를 통해 설정합니다.
widget의 기본 설정을 사용할 때widget에서 설정합니다.
QmimeData에 데이터 추가
DragDrop 처리 정보로 QmimeData를 만듭니다.
Drag Enter & Drop 때는 정보만 끌어내면 돼요.
DragLeave & Drop 시 QmimeData에 어떤 정보를 제공하는지 설정합니다.실제 동작의 설정은 Drop의 한쪽에서 설정됩니다.
widget->view->model->item
모델을 사용하여 QmimeData를 설정합니다.
QmimeData가 원래 있던 urls, text, 이미지 등 정보를 설정하면 Qt 앱 이외에도 설정한 것처럼 행동할 수 있다.
하지만 예상 밖의 조작으로 예상 밖의 문제가 발생하는 것도 번거로워 이번에는 사용하지 않는다.
QListWidget에서 QTree Widget으로 메시지 보내기
운송하고자 하는 정보는 URL과text의 정보이지만 위에서 말한 바와 같이 QmimeData의 기본값으로 설정된 예상치 못한 행동을 할 가능성이 높다.
따라서 QmimeData에 새로운 변수를 추가하고 정보를 받습니다.
이번에는 QTreeWidget에서 정보 조작을 하고 싶을 뿐만 아니라 모델과 item 주소도 직접 보내고 싶습니다.
Model->QMimeData
    def mimeData(self,indexes):
        mime = QMimeData()
        mime.rmodel = self
        items = []
        for index in indexes:
            items.append(self.item(index.row()))

        mime.ritems = items
        return mime
ritems Drag에 의해 처리된 항목의 주소 목록입니다.
rmodel에 item 모델의 주소를 저장합니다.
QTree Widget에서 이 정보를 얻지만, QTree Widget도 Urls에서 조작할 수 있습니다.
따라서 조금만 주의를 기울이지 않으면 에로르가 나타난다.
Tree->View->DropEvent
    def dropEvent(self,event):
        try:
            rmodel = event.mimeData().rmodel
            ritems = event.mimeData().ritems
            rflag = True
        except:
            rflag = False

        if rflag:
이렇게 되면 리스트에서 온 소품과 파이어에서 온 소품을 각각 설정해 처리할 수 있다.

좋은 웹페이지 즐겨찾기