我目前正在实施自定义委托,其中一部分我需要在QSpinBox
方法中绘制paint(..)
。
void Sy_floatingPointPD::paint( QPainter* painter,
const QStyleOptionViewItem& option,
const QModelIndex& index ) const
{
painter->save();
// Paint check box.
QStyleOptionSpinBox spOpt;
spOpt.palette = option.palette;
spOpt.rect = option.rect;
spOpt.state = option.state;
spOpt.frame = true;
spOpt.stepEnabled = QAbstractSpinBox::StepUpEnabled |
QAbstractSpinBox::StepDownEnabled;
style->drawComplexControl( QStyle::CC_SpinBox, &spOpt, painter );
painter->restore();
}
不幸的是,它显示为:
正如您所见,步骤按钮是大量,只显示向下箭头。有趣的是,按钮的宽度反映了第一个表格列的宽度,尽管option.rect
是单元格的大小(这是正确的,这可能是为什么正确绘制框架)。
任何想法我不会提供哪些信息QStyle
?
答案 0 :(得分:0)
jens over the qt-project论坛回答了这个问题,所以我会链接到here。
简而言之,旋转框图中存在一个设计缺陷(至少在QGtkStyle中),它只使用option.rect
的尺寸,忽略它的位置。虽然这在“普通”绘画场景中完全合理,因为它映射到窗口小部件原点,但由于单元格偏移而在项目视图中渲染时会失败。
要解决此问题,请将option.rect
移至窗口小部件原点(即将其左上角移至(0,0)),然后翻译QPainter
以考虑单元格偏移。< / p>