QTableWidget QTableView 选中虚框问题

来源:互联网 发布:java程序员更是 编辑:程序博客网 时间:2024/05/07 16:35

原址:http://stackoverflow.com/questions/2055705/hide-the-border-of-the-selected-cell-in-qtablewidget-in-pyqt



3
down voteaccepted

It looks like this dotted border around selected cell you're trying to hide is a focus rectangle. Any given cell can have focus and not be selected at the same time and vice-versa. If you want this border to not get painted use an item delegate. There you can remove State_HasFocus style from the item's state before painting it. Pls, see an example below on how to do this, it's c++, let me know if you have troubles converting it to python

// custom item delegate classclass 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 widgetui->tableView->setItemDelegate(new NoFocusDelegate());

原创粉丝点击