【问题标题】:QListWidget don't show the selected rowQListWidget 不显示选定的行
【发布时间】:2022-01-14 08:50:21
【问题描述】:

我在我的程序中创建了一个列表和一个重新排序(上/下)行的函数 所以我使用setCurrentRow() 在移动后更改选定的行 它运作良好,但选择未显示在列表中

我该怎么做

ps:我尝试了setSelectionRectVisible(True),但没有任何反应。

import sys
from PyQt5.QtWidgets import *
class MainWindow(QWidget):

    def __init__(self,parent=None):
        super(MainWindow, self).__init__()

        self.my_list = QListWidget(self)
        self.my_list.setGeometry(5,5,90,100)
        QListWidgetItem("1",self.my_list)
        QListWidgetItem("2",self.my_list)
        QListWidgetItem("3",self.my_list)
        QListWidgetItem("4",self.my_list)

        self.upButton = QPushButton("Up",self)
        self.upButton.move(100,10)
        self.upButton.clicked.connect(self.up)
        self.downButton = QPushButton("Down",self)
        self.downButton.move(100,30)
        self.downButton.clicked.connect(self.down)

    def up(self, event):
        w=self.my_list.currentRow() 
        if w > 0:
            self.my_list.insertItem(w-1, self.my_list.currentItem().text())
            self.my_list.takeItem(w+1)
            self.my_list.setCurrentRow(w-1)
            # self.my_list.setSelectionRectVisible(True)

    def down(self, event):
        w = self.my_list.currentRow() 
        if w < self.my_list.count()-1:
            self.my_list.insertItem(w+2, self.my_list.currentItem().text())
            self.my_list.takeItem(w)
            self.my_list.setCurrentRow(w+1)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    root = MainWindow()
    root.show()
    sys.exit(app.exec_())

我正在创建这个简单的示例来展示它,它适用于默认背景(灰色)

所以我的问题是找到突出显示的属性的名称来设置它

【问题讨论】:

标签: python pyqt5 qlistwidget


【解决方案1】:

所以我在样式表中找到了一个解决方案:

 QListWidget::item:selected:!active { background: #0099cc}

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 2020-10-12
    • 2020-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多