很老的問題,但也許有人會覺得它有用。 我有使用Qt 5.3相同的問題。
我發現qt-center的一些信息,它不能通過樣式表完成。
有沒有辦法在QListWidget中更改 選定項的字體粗細(或字體最小)?不,因爲這種字體樣式選項對QWidgets適用 ,因此您可以將字體(或其他類似字體大小) 樣式選項應用於整個QWidget(在此情況下爲QListWidget),而不是 ,以便派生QWidget的特殊行爲QListWidget的選擇 item。
我認爲它也適用於QTreeView,因爲我也無法改變它的風格。 我可以改變邊框,顏色,背景顏色,但沒有關於字體。 首先,我認爲我必須重新實現paintEvent函數,因爲我正在重新實現QTreeView。這並沒有工作。
解決方法解決:
但我發現使用QStyledItemDelegate一些解決方法。 基本上你必須繼承QTreeView,然後子類QStyledItemDelegate。 也許它會工作沒有子QTreeView則,但你必須以某種方式與釣選擇和取消項目的部分信號和通話setItemDelegateForRow和setItemDelegateForColumn(它應該只改變相交單元)
重新實現QStyledItemDelegate ::漆這樣:
QStyledItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QStyleOptionViewItemV4 editedOpt = option;
editedOpt.font = QFont("Arial", 23, 500);
initStyleOption(&editedOpt, index);
QStyledItemDelegate::paint(painter, editedOpt, index);
}
重新實現QTreeView則::參考selectionChanged(或純QTreeView則和捕捉QItemSelectionModel ::的SelectionChanged):
void CustomTreeView::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
{
foreach(const QModelIndex &index, selected.indexes()) {
setItemDelegateForRow(index.row(), new CustomDelegate(this));
setItemDelegateForColumn(index.column(), new CustomDelegate(this));
}
foreach(const QModelIndex &index, deselected.indexes()) {
setItemDelegateForRow(index.row(), new QStyledItemDelegate(this));
setItemDelegateForColumn(index.column(), new QStyledItemDelegate(this));
}
}