我正在使用 PyQt6 并有一個自定義 QTableView 和一個自定義 QTableModel。模型的資料方法如下所示:
def data(self, index: QModelIndex, role: Qt.ItemDataRole = Qt.ItemDataRole.DisplayRole):
if role == Qt.ItemDataRole.DecorationRole:
if not index.column():
# print(index.row())
artwork_pixmap = self._tracks[index.row()].artwork_pixmap
artwork_pixmap = artwork_pixmap if artwork_pixmap else QPixmap(f"icons/album.png")
icon = QIcon(artwork_pixmap)
return icon
_tracks 是一個包含自定義物件的串列,這些物件具有我想要顯示的像素圖,如果沒有,那么我只顯示來自 image album.png 的默認像素圖。一切正常,QIcons 顯示在第一列。但是一旦我選擇了該行,它也會使 QIcon 變藍,這不是我想要的。無論在我的視圖樣式表中設定的選擇顏色如何,它都會使它變成藍色。即使我將它的焦點策略設定為 NoFocus,它也不會在點擊時選擇任何內容,但它仍然會使我點擊的行中的 QIcon 依次變藍。有什么辦法可以防止這種情況發生嗎?
這是示例,第一行是我點擊的那一行,背景顏色沒有因為NoFocus而改變,但QIcon與正常顏色相比變得偏藍。

uj5u.com熱心網友回復:
QIcon 自動為Disabled和Selected 圖示模式創建給定像素圖的替代版本,第一個是像素圖的灰色版本,第二個基于調色板Highlight角色覆寫一個圖層。
要覆寫這些圖示,只需使用以下命令明確設定所需狀態的像素圖addPixmap():
artwork_pixmap = self._tracks[index.row()].artwork_pixmap
if not artwork_pixmap:
artwork_pixmap = QPixmap("icons/album.png")
icon = QIcon(artwork_pixmap)
icon.addPixmap(artwork_pixmap, QtGui.QIcon.Selected)
return icon
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/429969.html
