2010-01-13 342 views

回答

11

它看起來像你試圖隱藏的選定單元格周圍的虛線邊框是一個焦點矩形。任何給定的單元格都可以有焦點並且不能同時選擇,反之亦然。如果你想讓這個邊框不被繪製,請使用一個物品代理。在繪製之前,您可以從項目的狀態中刪除State_HasFocus樣式。請參見下面的例子就如何做到這一點,這是C++,讓我知道,如果你有麻煩將其轉換到Python

// custom item delegate class 
class NoFocusDelegate : public QStyledItemDelegate 
{ 
protected: 
    void paint(QPainter* painter, const QStyleOptionViewItem& option, const QModelIndex& index) const; 
}; 

void NoFocusDelegate::paint(QPainter* painter, const QStyleOptionViewItem & option, const QModelIndex &index) const 
{ 
    QStyleOptionViewItem itemOption(option); 
    if (itemOption.state & QStyle::State_HasFocus) 
     itemOption.state = itemOption.state^QStyle::State_HasFocus; 
    QStyledItemDelegate::paint(painter, itemOption, index); 
} 
... 
// set the item delegate to your table widget 
ui->tableView->setItemDelegate(new NoFocusDelegate()); 

希望這會有所幫助,至於

+2

非常感謝您的回覆..我已經實現了與setFocusPolicy(QtCore.Qt.NoFocus)相同的功能,因爲我已經使用qtablewidget ..雖然我對代表不熟悉,但我無法贊成此答案。 。它說聲望點必須大於15 .. – Jeba 2010-01-20 11:31:51

12

我喜歡做的事:

ui->tableWidget->setFocusPolicy(Qt::NoFocus); 

您還可以使用設計選項卡更改焦點策略。

+1

..但是你失去了鍵盤導航功能 – swdev 2014-05-23 00:05:36

相關問題