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

问题

软件功能:每点击一次新建按钮,在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()来确定该部件的理想大小。

  • 16
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值