首页 > 其他分享 >Qt QListWidget 存放自定义控件不显示问题

Qt QListWidget 存放自定义控件不显示问题

时间:2024-05-26 22:58:00浏览次数:23  
标签:控件 QListWidget sizeHint 自定义 myform item ui listWidget

问题

软件功能:每点击一次新建按钮,在QListWidget 新增一行自定义控件,主窗口和自定义窗口如下。

  1. 主窗口:
    在这里插入图片描述
  2. 自定义窗口
    在这里插入图片描述
    问题代码:
    Form *myform = new Form();

    QListWidgetItem *item = new QListWidgetItem(ui->listWidget);

    ui->listWidget->addItem(item);
    ui->listWidget->setItemWidget(item, myform);
    
    item->setSizeHint(myform->sizeHint());

运行后,在使用QListWidget 存放自定义控件窗口时,窗口不显示。

解决方法1

将自定义控件widget设置布局,如下
在这里插入图片描述
然后重新运行代码
在这里插入图片描述

解决方法2

在最开始的问题代码上修改
将item 获取的控件尺寸由sizeHint() 改为size()

void MyWidget::on_pushButton_clicked()
{
    Form *myform = new Form();

    QListWidgetItem *item = new QListWidgetItem(ui->listWidget);

    ui->listWidget->addItem(item);
    ui->listWidget->setItemWidget(item, myform);
    //item->setSizeHint(myform->sizeHint());
    item->setSizeHint(myform->size());
}

运行代码,结果如下
在这里插入图片描述
两种方法显示结果是有一些差别
myform->size() myform->sizeHint() 在 Qt 中具有不同的含义和用途:

  1. myform->size():

size() 方法返回QWidget对象当前的大小。
这个大小通常由用户或布局管理器设置,或者在窗口被调整大小时由系统自动计算。
通常用于获取 QWidget 对象的实际大小。
2. myform->sizeHint():

sizeHint()方法返回 QWidget 对象的建议大小,即该对象希望具有的大小。
这个大小通常由 QWidget子类重写该方法来提供一个默认的推荐大小,以便布局管理器在需要时可以使用它。
当将 QWidget 添加到布局中时,布局管理器可能会使用sizeHint()来确定该部件的理想大小。

标签:控件,QListWidget,sizeHint,自定义,myform,item,ui,listWidget
From: https://blog.csdn.net/qq_33169543/article/details/139222587

相关文章

  • 这个让ChatGPT变强的功能还有多少人不知道(自定义ChatGPT)!
    ChatGPT已经成为许多人日常生活和工作中的重要工具。为了更好地满足用户的个性化需求,ChatGPT推出了自定义功能。但是最近我发现很多同学因为嫌麻烦或者不知道怎么写,就没有使用过这个功能,也有些同学都不知道这个功能。所以今天我就来科普一下怎么使用这个功能使你的ChatGPT......
  • 自定义类型:联合和枚举
    目录1.联合体1.1联合体类型的声明1.2联合体的特点1.3相同成员的结构体和联合体对比1.4联合体大小的计算1.5联合的⼀个练习2.枚举类型2.1枚举类型的声明2.2枚举类型的优点2.3枚举类型的使用1.联合体1.1联合体类型的声明像结构体⼀样,联合体也是由⼀个或......
  • 自定义RedisTemplate,解决Redis乱码问题
    问题:使用默认的RedisTemplate来操作Redis,在其底层使用的是JDK序列化器,会导致数据乱码问题,可读性差,其优点是兼容性高。解决:自定义RedisTemplate,使用Jackson序列化器替代JDK序列化器。@ConfigurationpublicclassRedisConfig{@BeanpublicRedisTemplate<String,......
  • Haskell 的 自定义类型(data、type)
    在Haskell中,type和data关键字都用于定义新的数据类型,但它们有着不同的作用和语法。一、type关键字:作用:type关键字用于为已有类型创建别名,使得代码更易读和更具可读性。语法:其语法为typeNewType=ExistingType,其中NewType是新类型的名称,ExistingType是已有类......
  • 改造 Kubernetes 自定义调度器
    原文出处:改造Kubernetes自定义调度器|Jayden'sBlog(jaydenchang.top)OverviewKubernetes默认调度器在调度Pod时并不关心特殊资源例如磁盘、GPU等,因此突发奇想来改造调度器,在翻阅官方调度器框架[1]、调度器配置[2]和参考大佬的文章[3]后,自己也来尝试改写一下。环境......
  • 写入自定义 ASP.NET Core 中间件
    中间件是一种装配到应用管道以处理请求和响应的软件。ASP.NETCore提供了一组丰富的内置中间件组件,但在某些情况下,你可能需要写入自定义中间件。自定义中间件类通常,中间件封装在类中,并且通过扩展方法公开。一、内联中间件(不推荐) 请考虑以下内联中间件,该中间件通过查询字......
  • sqlite 不支持毫秒怎么办,可以用sqlalchemy自定义类型
    fromsqlalchemyimportDECIMAL,Index,String,Date,Integer,Text,CHAR,SmallInteger,Float,Time,case,and_,extract,Boolean,Enum,TypeDecorator#自定义类型classDateTimeString(TypeDecorator):impl=Stringdefprocess_bind_param(self,value......
  • 自定义一个SpringBoot场景启动器
    前言一个刚刚看完SpringBoot自动装配原理的萌新依据自己的理解写下的文章,如有大神发现错误,敬请斧正,不胜感激。分析SpringBoot自动配置原理SpringBoot的启动从被@SpringBootApplication修饰的启动类开始,@SpringBootApplicaiotn注解中最重要的注解是@EnableAutoConfigurat......
  • WPF一个简单的属性编辑控件
    代码:publicclassPropertiesControl:Grid{[TypeConverter(typeof(LengthConverter))]publicdoubleRowHeight{get{return(double)GetValue(RowHeightProperty);}set{SetValue(RowHeightProperty,......
  • Vue3实战笔记(40)—组件逻辑复用:自定义Hooks的完全指南
    文章目录前言一、状态管理二、副作用处理三、生命周期钩子总结前言自定义Hooks是Vue3中的一个重要特性,它允许您创建可重用的函数,以便在组件之间共享状态和逻辑。以下是一些关于自定义Hooks的常见用法。一、状态管理使用reactive或ref来创建响应式数据,并在组件中......