qt tableview 焦点样式
时间: 2023-08-24 08:04:52 浏览: 100
qt tableview使用
Qt 的 TableView 组件默认情况下会在当前单元格周围绘制一个虚线框来表示焦点。如果需要更改焦点样式,可以通过 QStyledItemDelegate 类来实现。
以下是一个示例代码:
```cpp
// 自定义委托类
class MyDelegate : public QStyledItemDelegate {
public:
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override {
// 如果当前单元格获得焦点,则绘制一个红色实线矩形框
if (option.state & QStyle::State_HasFocus) {
painter->setPen(QPen(Qt::red));
painter->drawRect(option.rect.adjusted(0, 0, -1, -1));
}
QStyledItemDelegate::paint(painter, option, index);
}
};
// 设置委托
tableView->setItemDelegate(new MyDelegate());
```
在上述代码中,我们创建了一个自定义委托类 `MyDelegate`,重写了 `paint()` 函数来实现自定义的焦点样式。在函数中,我们首先判断当前单元格是否获得了焦点,如果是,则绘制一个红色实线矩形框;否则调用父类的 `paint()` 函数来绘制默认样式。
最后,我们将自定义委托类设置给 TableView 组件,即可看到自定义的焦点样式生效了。
阅读全文