首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QSpinBox未正确绘制

QSpinBox未正确绘制
EN

Stack Overflow用户
提问于 2013-03-09 18:42:05
回答 1查看 675关注 0票数 1

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

代码语言:javascript
复制
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什么信息

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-10 10:42:59

在qt项目论坛上的Jens回答了这个问题,所以我将链接到它这里

简而言之,旋转盒绘图中存在一个设计缺陷(至少在QGtkStyle中是这样),它只使用option.rect的大小,而忽略了它的位置。虽然这在“正常”绘制场景中完全合理,因为它映射到小部件原点,但由于单元格偏移,它在item视图中呈现时会失败。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15314482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档