据我了解,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
- 但是,我需要照顾我尽量避免的内存。这最终是我提出问题的原因。
你看到
的问题没有。const&
将使其引用的(在本例中为临时)对象保持活动状态,直到引用本身超出范围。如果你看一下 QVariant 的实现,你会发现它复制了这个值。
这里没有问题 - 继续前进。