2010-01-13 194 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

相关问题