Qt QTableView – 使用IsUserCheckable时对齐复选框

前端之家收集整理的这篇文章主要介绍了Qt QTableView – 使用IsUserCheckable时对齐复选框前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Qt :: ItemIsUserCheckable的QTableView复选框标志来显示表格单元格中的复选框.

在读取了一些对齐的东西以试图将复选框置于单元格中心之后,我将Qt :: AlignCenter作为TextAlignmentRole从models data()函数返回.

QVariant ExampleModel::data(const QModelIndex &index,int role) const 
{
  if(!index.isValid())
     return QVariant();

  if (role == Qt::TextAlignmentRole) 
       return Qt::AlignCenter | Qt::AlignVCenter;
}

但是这并没有对齐我的复选框.

有谁知道如何对齐复选框是这种模式?

解决方法

在对委托选项进行进一步调查之后,我发现了一个不错的引用(遗憾的是不再可用),并使用QItemDelegate和IsUserCheckable提出了以下混合.

本质上,您需要扩展QItemDelegate并重新实现,使用drawCheck函数居中并使用editorEvent处理鼠标和键盘事件,同时使用适当的状态设置模型.

void drawCheck(QPainter* painter,QStyleOptionViewItem const& option,QRect const& rect,Qt::CheckState state) const

bool editorEvent(QEvent *event,QAbstractItemModel *model,const QStyleOptionViewItem &option,const QModelIndex &index)

另见这个类似的问题here ……

猜你在找的HTML相关文章