>

각 항목이 텍스트와 푸시 버튼을 포함하는 간단한 위젯 인 QListWidget을 만들려고합니다. 나는 다음을 사용한다 :

itemN = QtGui.QListWidgetItem() 
#Create widget
widget = QtGui.QWidget()
widgetText =  QtGui.QLabel("I love PyQt!")
widgetButton =  QtGui.QPushButton("Push Me")
widgetLayout = QtGui.QHBoxLayout()
widgetLayout.addWidget(widgetText)
widgetLayout.addWidget(widgetButton)
widgetLayout.addStretch()
widget.setLayout(widgetLayout)
#Add widget to QListWidget funList
funList.addItem(itemN)
funList.setItemWidget(itemN, widget)

문제는 아무것도 나타나지 않는다는 것입니다. 키보드를 사용하여 탐색 할 수있는 빈 줄이 표시되지만 비어 있습니다. 위젯에 푸시 버튼이단지포함되어 있으면 작동하므로 푸시 버튼만으로 문제가 발생하는 것처럼 보이지 않습니다. setItemWidget 위젯의 복잡성에 제한이 있습니까  다룰수있다? 아래의 관련 게시물에서 제안한 것처럼 편의 클래스를 넘어서야합니까?

관련 게시물

pyqt 위젯을 QListWidget에 추가
이전 게시물은 비슷한 제목을 가지고 있지만 QtDesigner의 복잡한 코드 페이스트 (일부 사용자 지정 항목과 혼합)에 대해 비교적 잘 표현되지 않은 질문 인 것 같습니다. 이것이 실제로 그 사람이 요구 했어야했던 질문이라는 것이 전혀 명확하지 않습니다. 제목이 중복 된 것처럼 보이지만 질문 (기도합니다)은 아닙니다.

이 게시물에 대해 비슷한 말을합니다.

라디오 버튼이있는 QListWidgetItem

사용자 정의 항목 및 사용자 정의 항목 위젯이있는 QListView/QListWidget

QT의 QListWidget에 사용자 정의 위젯 추가 QT의 클릭 문제?

pyqt 위젯을 QListWidget에 추가

http : // www. qtcentre.org/threads/8660-Drawing-a-widget-in-QItemDelegate-s-paint-method

http : // developer. nokia.com/community/discussion/showthread.php/211634-Adding-a-button-inside-QListWidgetItem

  • 답변 # 1

    이것을 시도하십시오 :

    itemN = QtGui.QListWidgetItem() 
    #Create widget
    widget = QtGui.QWidget()
    widgetText =  QtGui.QLabel("I love PyQt!")
    widgetButton =  QtGui.QPushButton("Push Me")
    widgetLayout = QtGui.QHBoxLayout()
    widgetLayout.addWidget(widgetText)
    widgetLayout.addWidget(widgetButton)
    widgetLayout.addStretch()
    widgetLayout.setSizeConstraint(QtGui.QLayout.SetFixedSize)
    widget.setLayout(widgetLayout)  
    itemN.setSizeHint(widget.sizeHint())    
    #Add widget to QListWidget funList
    funList.addItem(itemN)
    funList.setItemWidget(itemN, widget)
    
    

    보시다시피 setSizeConstraint 가 필요합니다  레이아웃과 setSizeHint  항목에.

  • 답변 # 2

    PyQt5를 사용하는 경우 몇 가지 변경 사항이 있으므로 QtWidgets 를 사용해야합니다  위젯이 QtGui 가 아닌 경우 . PyQt5와 함께 사용하는 경우이 코드를 사용하십시오.

    PyQt5를 가져 오는 것을 잊지 마십시오 :

    from PyQt5 import QtCore, QtGui, QtWidgets`
    itemN = QtWidgets.QListWidgetItem()
    # Create widget
    widget = QtWidgets.QWidget()
    widgetText = QtWidgets.QLabel("I love PyQt!")
    widgetButton = QtWidgets.QPushButton("Push Me")
    widgetLayout = QtWidgets.QHBoxLayout()
    widgetLayout.addWidget(widgetText)
    widgetLayout.addWidget(widgetButton)
    widgetLayout.addStretch()
    widgetLayout.setSizeConstraint(QtWidgets.QLayout.SetFixedSize)
    widget.setLayout(widgetLayout)
    itemN.setSizeHint(widget.sizeHint())
    # Add widget to QListWidget funList
    funList.addItem(itemN)
    funList.setItemWidget(itemN, widget)
    
    

  • 이전 Laravel Eloquent Query Where IN 문
  • 다음 solidity - 리믹스, 컴파일러 또는 openzeplin 버그입니까?