我如何使用QComboBox与QVariant的关系



据我了解,QComboBox可以保存文本(即名称)和数据(即对象)。我的QComboBox应该存储QSizeF,同时显示漂亮的名称。因此,我想做这样的事情:

void fillComboBox() {
    ui->combobox->addItem("big", QVariant(QSizeF(600,400)));   
    ui->combobox->addItem("medium", QVariant(QSizeF(300,300)));   
    ui->combobox->addItem("small", QVariant(QSizeF(100,200)));
}

问题是,QVariant通过const引用而不是通过值/移动来获取QSizeF。返回后,引用将因此晃来晃去。

正确的方法是什么?如果我有一个类型 MyClass ,因此是一个自定义类而不是 Q什么的,我将如何使用QVariante

注意:当然,我可以在堆上创建QSizeF - 但是,我需要照顾我尽量避免的内存。这最终是我提出问题的原因。

你看到

的问题没有。
  1. const&将使其引用的(在本例中为临时)对象保持活动状态,直到引用本身超出范围。

  2. 如果你看一下 QVariant 的实现,你会发现它复制了这个值。

这里没有问题 - 继续前进。

相关内容

  • 没有找到相关文章

最新更新