如何使用 QtCore.Qt.UserRole 在 QListWidgetItem

我想在 QListWidgetItem 中以粗体显示单个单词。根据此相关帖子,应该可以QtCore.Qt.UserRole用于此目的。但是,提供的示例代码对我不起作用。(因为我是初学者,我很可能忘记了一个定义,但我不知道是哪个。)


这是我到目前为止:


主界面


<?xml version="1.0" encoding="UTF-8"?>

<ui version="4.0">

 <class>Dialog</class>

 <widget class="QDialog" name="Dialog">

  <property name="geometry">

   <rect>

    <x>0</x>

    <y>0</y>

    <width>341</width>

    <height>244</height>

   </rect>

  </property>

  <property name="windowTitle">

   <string>Dialog</string>

  </property>

  <widget class="QWidget" name="verticalLayoutWidget">

   <property name="geometry">

    <rect>

     <x>10</x>

     <y>10</y>

     <width>321</width>

     <height>231</height>

    </rect>

   </property>

   <layout class="QVBoxLayout" name="verticalLayout">

    <item>

     <widget class="QListWidget" name="lwOptions"/>

    </item>

   </layout>

  </widget>

 </widget>

 <resources/>

 <connections/>

</ui>

测试文件


import os

import sys

from PyQt5 import QtCore, uic

from PyQt5.Qt import QApplication, QDialog, QListWidgetItem


class GUI(QDialog):


    def __init__(self):

        super(GUI, self).__init__()

        dirname = os.path.dirname(os.path.abspath(__file__))

        uic.loadUi(os.path.join(dirname,'main.ui'), self)


        # this doesn't work

        for ordinal in ['first', 'second', 'third']:

            item = QListWidgetItem()

            item.setData(QtCore.Qt.UserRole, 'This is the <b>{}</b> word.'.format(ordinal)) 

            self.lwOptions.addItem(item)


        for ordinal in ['fourth', 'fifth', 'sixth']:

            item = QListWidgetItem('This is the <b>{}</b> word.'.format(ordinal))

            self.lwOptions.addItem(item)


if __name__ == '__main__':

    app = QApplication(sys.argv)

    window = GUI()

    window.show()

    sys.exit(app.exec_())

当我运行代码时,它会添加三个空行和三个带有逐字消息的行。


什么是正确的QtCore.Qt.UserRole语法?


摇曳的蔷薇
浏览 336回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python