gpt4 book ai didi

c++ - QSpinBox 绘制不正确

转载 作者:太空宇宙 更新时间:2023-11-04 14:09:35 30 4
gpt4 key购买 nike

我目前正在实现一个自定义委托(delegate),其中一部分我需要在 paint(..) 方法中绘制一个 QSpinBox

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();
}

不幸的是,它显示为:

Paint failure

如您所见,步骤按钮绘制成并且只显示向下箭头。有趣的是,按钮的宽度反射(reflect)了第一个表格列的宽度,尽管 option.rect 是单元格的大小(这是正确的,这大概是框架被正确绘制的原因)。

知道我没有给 QStyle 什么信息吗?

最佳答案

Jens 在 qt-project 论坛上回答了这个问题,所以我会链接到它 here .

简而言之,旋转框绘图(至少在 QGtkStyle 中)存在设计缺陷,它仅使用 option.rectsize,而忽略了它位置。虽然这在“正常”绘画场景中是完全合理的,因为它映射到小部件原点,但由于单元格偏移而在项目 View 中呈现时失败。

要解决这个问题,请将 option.rect 移动到小部件原点(即将其左上角移动到 (0,0)),然后将 QPainter 转换为考虑单元格偏移量。

关于c++ - QSpinBox 绘制不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15314482/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com