在QTableView选中后会存在虚线框,表示存在焦点
要去掉虚线框,只要重载QStyledItemDelegate的paint函数,把焦点移除即可
代码
class QCommonDelegate : public QStyledItemDelegate
{
Q_OBJECT
public:
QCommonDelegate(QObject *parent);
~QCommonDelegate();
private:
void paint(QPainter *painter,
const QStyleOptionViewItem &option, const QModelIndex &index) const;
};
void QCommonDelegate::paint(QPainter *painter,
const QStyleOptionViewItem &option, const QModelIndex &index) const
{
//去掉Focus
QStyleOptionViewItem viewOption(option);
initStyleOption(&viewOption, index);
if (option.state.testFlag(QStyle::State_HasFocus))
{
viewOption.state = viewOption.state ^ QStyle::State_HasFocus;
}
QStyledItemDelegate::paint(painter, viewOption, index);
}
方便简单