首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

QStyledItemDelegate的初始画图高度错误

QStyledItemDelegate是Qt框架中的一个类,用于自定义列表或表格中的项的外观和行为。它是Qt的一个重要组件,用于实现自定义的列表和表格视图。

在使用QStyledItemDelegate时,可能会遇到初始画图高度错误的问题。这个问题通常是由于没有正确设置项的高度导致的。

解决这个问题的方法是通过重写QStyledItemDelegate的sizeHint()函数来设置项的高度。sizeHint()函数返回一个QSize对象,用于指定项的大小。可以根据实际需求计算并设置正确的高度。

另外,还可以使用QStyleOptionViewItem类来获取项的样式选项,包括项的大小、背景色、前景色等信息。可以根据这些信息来动态计算项的高度。

对于QStyledItemDelegate的初始画图高度错误问题,可以参考以下步骤进行解决:

  1. 在自定义的QStyledItemDelegate类中重写sizeHint()函数。
  2. 在sizeHint()函数中,根据实际需求计算并设置项的高度。
  3. 使用QStyleOptionViewItem类获取项的样式选项。
  4. 根据样式选项中的信息,动态计算项的高度。
  5. 返回计算得到的项的大小作为sizeHint()函数的返回值。

以下是一个示例代码,展示了如何解决QStyledItemDelegate的初始画图高度错误问题:

代码语言:txt
复制
#include <QStyledItemDelegate>
#include <QStyleOptionViewItem>
#include <QModelIndex>
#include <QSize>

class CustomItemDelegate : public QStyledItemDelegate
{
public:
    QSize sizeHint(const QStyleOptionViewItem& option, const QModelIndex& index) const override
    {
        // 获取项的样式选项
        QStyleOptionViewItem opt = option;
        initStyleOption(&opt, index);

        // 根据实际需求计算项的高度
        int height = calculateItemHeight(opt);

        // 返回项的大小
        return QSize(opt.rect.width(), height);
    }

private:
    int calculateItemHeight(const QStyleOptionViewItem& option) const
    {
        // 根据样式选项中的信息,动态计算项的高度
        // 可以根据文本内容、图标等进行计算

        return 50; // 返回计算得到的项的高度
    }
};

在上述示例代码中,CustomItemDelegate类继承自QStyledItemDelegate,并重写了sizeHint()函数。在sizeHint()函数中,根据实际需求计算项的高度,并返回计算得到的项的大小。

这样,通过重写QStyledItemDelegate的sizeHint()函数,可以解决QStyledItemDelegate的初始画图高度错误问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

C++ Qt开发:QItemDelegate自定义代理组件

Qt 是一个跨平台C++图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽方式将不同组件放到指定位置,实现图形化开发极大方便了开发效率,本章将重点介绍QStyledItemDelegate...在Qt中,QStyledItemDelegate 类是用于创建自定义表格视图(如QTableView和QTableWidget)委托类,允许你自定义表格中每个单元格外观和交互。...QStyledItemDelegate 是QItemDelegate 子类,提供了更现代、更易用接口。...QAbstractItemDelegate 是 QItemDelegate 基类,而 QItemDelegate 则是 QStyledItemDelegate 基类。...Class 输入自定义类名称QWintSpinDelegate,然后基类继承QStyledItemDelegate/QMainWindow,然后下一步结束向导,同理其他功能创建也如此。

76311
  • 错误记录】Kotlin 代码运行时报错 ( 在 init 初始化块中调用还未初始成员属性 )

    文章目录 一、报错信息 二、问题分析 三、解决方案 该问题本质就是 , 成员属性 在 init 初始化代码块中进行初始化 , 但是在初始化之前调用了该 成员属性 , 编译时没有报错信息 , 但是运行时会报异常...角度分析 上述代码执行顺序 , Kotlin 类 对象在实例化 时会执行一系列 初始化操作 , 这些操作按照如下顺序执行 : 主构造函数 中属性赋值 类中属性赋值 init 初始化块 中代码执行...次构造函数 中代码执行 首先 , 上述代码中没有主构造 函数 , 因此该项忽略 ; 然后 , 执行属性赋值 , 代码中定义了 name 属性 , 但是没有进行赋值 ; var name: String...再后 , 执行 init 初始化块 , 其中先执行 nameFirstLetter 函数 , 在该函数中调用了 fun nameFirstLetter() = name[0] 中 name 属性 ,..., 成员属性 在 init 初始化代码块中进行初始化 , 但是在初始化之前调用了该 成员属性 , 编译时没有报错信息 , 但是运行时会报异常 ; 三、解决方案 ---- 调换 初始化代码块 中代码顺序

    1.7K10

    CC++ Qt TableDelegate 自定义代理组件

    代理类作用是用来实现重写,例如我们TableView中默认是可编辑,这个可编辑组件是QT默认为我们重写了QLineEdit组件,也可理解为将组件嵌入到了表格中,实现了对表格编辑功能。...先来实现一个代理,代理到Spin组件上,首先需要在项目上右键 选择addnew -> C++Class 输入自定义类名称QWintSpinDelegate,然后基类继承QStyledItemDelegate...include "spindelegate.h" #include QWIntSpinDelegate::QWIntSpinDelegate(QObject *parent):QStyledItemDelegate...MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); // 初始化模型数据...model = new QStandardItemModel(4,6,this); // 初始化4行,每行六列 selection = new QItemSelectionModel

    59320

    Go常见错误集锦之不正确初始化slice方式会降低性能

    当使用 make 初始化一个切片时,我们必须提供一个长度参数和一个可选容量参数。Go 研发者常犯一个错误就是当使用 make 进行初始化时忘记传递这两个或其中一个参数。...0,容量为 n ② 通过更新底层数组方式来添加新元素 我们仅仅在初始化切片时 对容量进行了改变。...然而,第二种具有使用方便优势。 将切片从一种类型转换到另一种类型是非常常见操作。正如我们上面看到,如果 slice 长度是已知,就没有理由使用一个空切片来初始化。...解决方案就是可以使用一个给定长度或一个给定容量参数来初始化切片。...当使用给定长度参数进行初始化时,通过给 slice 索引赋值来更新对应元素,如果是使用特定容量初始化方式,则使用 append 来添加元素。这两种方式相比,前者会更快一些。

    34310

    自定义天气显示温度变化LinearChart控件

    这次发表是前几个月搞定一个自定义控件,那时自己在写一个小查看天气软件,在这过程中就涉及了显示天气变化折线图,一开始想用一些画图框架来解决问题,不过考虑到就只用到LineChart折线图这一个控件就要导一个库有点太浪费了...因为两条折线上下是有文字显示每个点,所以实际Y轴高度是整个View高度减去文字大小和原点半径和设置间隔。...否则是有温差情况,高度除于温差得到最小高度值float partVlaue=yAxisHeight/parts;,然后整个View高度减去每个实际温度数据减去最小值再乘以最小高度值在减去底下文字高度等...(length),就是这一点具体Y轴高度。...其实大部分代码都是在初始化数据,等数据初始化完之后就是画图阶段了,代码如下: //画图 public void DrawLine(Canvas canvas,List XValue,

    92810

    错误记录】Kotlin 代码运行时报错 ( 成员属性初始化顺序是按照从上到下顺序进行 , 上面的属性不要调用下面未进行初始属性 )

    文章目录 一、报错信息 二、问题分析 三、解决方案 该问题本质就是 , 成员属性初始化顺序是按照从上到下顺序进行 , 上面的属性不要调用下面未进行初始属性 ; 一、报错信息 ---- 执行下面的代码...: Tom 0 在上述代码构造函数中 , 传入了 _age 临时变量值为 18 , 给 age 赋值 18 , 但是最终打印出来数据为 0 ; 二、问题分析 ---- Kotlin 类 对象在实例化...时会执行一系列 初始化操作 , 这些操作按照如下顺序执行 : 主构造函数 中属性赋值 类中属性赋值 init 初始化块 中代码执行 次构造函数 中代码执行 在下面的代码中 , class Hello...; 因此最终打印出 name 结果是 Tom 0 ; 三、解决方案 ---- 成员属性初始化顺序是按照从上到下顺序进行 , 上面的属性不要调用下面未进行初始属性 ; 调换 age 属性与 name...属性顺序 , 先对 age 进行赋值 , 即可得到想要结果 ; class Hello(_age: Int){ var age = _age var name: String =

    43110

    利用 Canvas 实现 Valine 评论画板涂鸦

    评论涂鸦 前几天在 Joe(https://ae.js.cn/)网站上留言时候发现了一个叫“画图模式”东西,点进去后自动切换文本框到画板了(类似QQ涂鸦,你画我猜那种画板),然后可以在画板上画画,...评论涂鸦画板样式 Canvas 说起 html 画图,肯定避不开 html5 canvas 技术,canvas 能提供不仅是画图功能,很多网页游戏也都是基于 canvas 制作。...或者 runoob 教程网站自行查询) 实现思路 简单来说首先要实现还是画图功能,先创建 canvas 面板,再给面板添加画图触发事件(鼠标按下并移动、松开等),然后添加画板工具事件(画笔颜色、...切换点击事件 btn.onclick = () =>{ width = vedit.clientWidth - 40; //修改默认 width 参数后再重复初始化参数...base64 链接到 valine 文本框时防止字符过长导致文本框高度问题 } } initCanvas(); //初始化 canvas 参数 draw()

    9910

    iOS layout相关方法

    系统在很多时候会去调用这个方法: 1.初始化不会触发layoutSubviews,但是如果设置了不为CGRectZeroframe时候就会触发。...drawRect在以下情况下会被调用: 1、如果在UIView初始化时没有设置rect大小,将直接导致drawRect不被自动调用。...如果在其他方法中获取将获取到一个invalidateref并且不能用于画图。...同样也是调用setNeedDisplay等间接调用以上方法 3、若要实时画图,不能使用gestureRecognizer,只能使用touchbegan等方法来掉用setNeedsDisplay实时刷新屏幕...:120.0 高度:24.0 实际宽度:50.0 实际高度:50.0 实际宽度:120.0 实际高度:24.0 有上面的例子可以看出 sizeThatFits 返回“最佳”大小以适应给定大小

    1K10

    Qt编写自定义控件46-树状导航栏

    二、实现功能 1:设置节点数据相当方便,按照对应格式填入即可,分隔符, 2:可设置提示信息 是否显示+宽度 3:可设置行分隔符 是否显示+高度+颜色 4:可设置选中节点线条突出显示+颜色+左侧右侧位置...+高度 9:可设置子节点文字 图标边距+左侧距离+字体大小+高度 10:可设置节点展开模式 单击+双击+禁用 三、效果图 [在这里插入图片描述] 四、头文件代码 #ifndef NAVLISTVIEW_H...选中颜色+悬停颜色+默认颜色 * 8:可设置父节点文字 图标边距+左侧距离+字体大小+高度 * 9:可设置子节点文字 图标边距+左侧距离+字体大小+高度 * 10:可设置节点展开模式 单击+...双击+禁用 */ #include #include #include #include...qwt控件类环环相扣,高度耦合,想要使用其中一个控件,必须包含所有的代码。

    2.6K40

    实景照片秒变新海诚风格漫画:清华大学提出CartoonGAN

    究其原因,首先,漫画风不是添加纹理和边界线,而是需要从现实世界图像复杂构造中高度简化;其次,尽管艺术家之间风格各异,但卡通图像具有一些明显共通之处:边缘清晰、颜色遮罩平滑、质地相对简单——这与其他形式艺术作品截然不同...作者进一步引入了一个初始化阶段来改善网络到目标流形收敛。新方法比现有的训练方法效率要高很多。 在 CartoonGAN 中,生成器网络 G 用于将输入图像映射到漫画流型中。...我们解决方案属于基于学习方法,也就是近来以艺术形式做图像风格化流行方式。然而,已有的方法不能产生令人满意的卡通化结果,主要是因为:1. 漫画风格有自己独特特点,高度简化、抽象化。2....我们方法采用未配对照片和漫画图来做训练,非常容易使用。我们也提出了两种适用于漫画化两种全新损失函数: 1....我们进一步引入了初始化阶段,来改进网络收敛达到目标流形。我们方法也要比已有方法有更高效训练。

    70230

    自定义圆环进度条

    分析完毕-->绘制步骤: 1:构造方法当中初始化画笔对象,获取自定义属性值. 2:重写Ondraw方法   ---2.1:绘制最外层圆          -关键方法canvas.drawCircle...坐标         半径:         int radius = (int) (center - roundWidth/2) ---画图说明最容易理解   ---2.2:绘制中间百分比文字        ...,由参数2,3X,Y坐标值决定--圆环中心点位置显示          X:表示从哪开始绘制,如果你直接中心点开始绘制-->画图说明最容易理解          -->正确X=center - textWidth.../ 2;Y = center + textSize / 2 --(因为android坐标系与数学坐标系Y轴值是相反,也可以画图说明,这里textsize就可以代表高度,paint.measureText...测量方法执行之后,默认文字高度就是根据文字大小计算,相当于wrap_content,所以textSize就是本身文字所占高度值)          *:绘制进度要转换为百分比形式:int percent

    1.4K60

    OpenCV 2.2版本号以上显示图片到 MFC Picture Control 控件中

    所以在了解了一些gdi画图之后结合网上代码写了例如以下函数,仅仅需调用就能够将OpenCV图片显示在上面了(仅仅支持三通道不支持单通道),初步測试效率跟原来两个文件差点儿相同。...在对话框类中声明函数: void drawpic(IplImage* img, unsigned int id);//画图到 MFC Picture Control 控件相关函数...发现了一些错误,也把错误地方改动掉了。相信有GDI画图基础的人应该早就看出来了,实在羞愧。 对于上面的那份代码,是能够适用于普通情况画图工作。...然而假设须要进一步优化性能还是大有可为,比方将程序拆分成“初始化”,“主体部分”,“内存释放”三个部分。便不用每次显示图片都进行初始化和内存释放,会进一步提高程序效率。...參数一为 OpenCV图像数据结构类,參数二为控件id void drawpic(IplImage* img);//画图到MFC Picture Control 控件相关函数,參数一为 OpenCV

    55120

    实景照片秒变新海诚风格漫画:清华大学提出CartoonGAN

    究其原因,首先,漫画风不是添加纹理和边界线,而是需要从现实世界图像复杂构造中高度简化;其次,尽管艺术家之间风格各异,但卡通图像具有一些明显共通之处:边缘清晰、颜色遮罩平滑、质地相对简单——这与其他形式艺术作品截然不同...作者进一步引入了一个初始化阶段来改善网络到目标流形收敛。新方法比现有的训练方法效率要高很多。 在 CartoonGAN 中,生成器网络 G 用于将输入图像映射到漫画流型中。...我们解决方案属于基于学习方法,也就是近来以艺术形式做图像风格化流行方式。然而,已有的方法不能产生令人满意的卡通化结果,主要是因为:1. 漫画风格有自己独特特点,高度简化、抽象化。2....我们方法采用未配对照片和漫画图来做训练,非常容易使用。我们也提出了两种适用于漫画化两种全新损失函数: 1....我们进一步引入了初始化阶段,来改进网络收敛达到目标流形。我们方法也要比已有方法有更高效训练。

    80920

    自定义圆环进度条

    [Stroken]) 分析完毕-->绘制步骤: 1:构造方法当中初始化画笔对象,获取自定义属性值. 2:重写Ondraw方法 ---2.1:绘制最外层圆 -关键方法canvas.drawCircle...坐标 半径: int radius = (int) (center - roundWidth/2) ---画图说明最容易理解 ---2.2:绘制中间百分比文字...,由参数2,3X,Y坐标值决定--圆环中心点位置显示 X:表示从哪开始绘制,如果你直接中心点开始绘制-->画图说明最容易理解 -->正确X=center - textWidth.../ 2;Y = center + textSize / 2 --(因为android坐标系与数学坐标系Y轴值是相反,也可以画图说明,这里textsize就可以代表高度,paint.measureText...测量方法执行之后,默认文字高度就是根据文字大小计算,相当于wrap_content,所以textSize就是本身文字所占高度值) *:绘制进度要转换为百分比形式:int percent

    68910

    python中tkinter窗口位置坐标大小等实现示例

    正在尝试着做一个比较完善画图软件,计划使用tkinter库中canvas控件来做,然后正在攻关图形项位置、坐标、大小及其他属性项保存和加载问题,刚好需要用到坐标、位置知识,因此作为这个画图软件附带产出物...其实:第一个是指窗口宽度,第二个窗口高度,第三个窗口左上点离左屏幕边界距离,第四个窗口左上点离上面屏幕边界距离。...其中将_WIDTH替换为窗口宽度,将_HEIGHT替换为窗口高度 设置窗口在屏幕上位置: root.geometry(“+X+Y”),X/Y表示以屏幕左上角为顶点窗口坐标 (2)常用事件处理函数...from tkinter import * def go(): txt = '窗口左上角坐标为:(%s,%s)\n窗口高度为:%s窗口宽度为:%s' \ % (root.winfo_x...(4)一个很重要知识点 我们使用上述方法得到位置和宽高,其实是tk初始化时一个值。因此在初始时候默认都是1,如果需要获取准确位置和大小信息此时我们调用update方法,刷新win窗口。

    2.4K60

    Python 骚操作:如何给你爱读者每天发早报?

    inf_orgin): inf_after.append(u'%s、%s' % ((num + 1), single_info)) return inf_after 二、生成早报图片 首先导入画图库...ImageDraw, ImageFont 1.画日报报头 设置字体类型和颜色,字体类型后续会用到,字体需要填写自己电脑上有的字体,window一般在C:/Windows/Fonts文件夹下,如果字体设置错误...= ImageFont.truetype(font_type, 38) color = "#726053" color1 = "#294E76" (1)画题目 header_x 和header_y是要画图坐标...,传入画图开始坐标:x,y值,要画列表list,以及字体高度和标题文字;做函数优点就在于不用重复写代码 def draw_info(x, y, the_list, linehigh, title_text...wxpy import * import time #获取系统时间 cur_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) #初始

    64120
    领券