据我了解,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
,因此是一个自定义类而不是 Qwhatever,我将如何使用 QVariante
?
注意:我当然可以在堆上创建 QSizeF
- 但是,我需要处理我尽量避免的内存。这最终是我提出问题的原因。
最佳答案
您在没有问题的地方看到了问题。
const&
将保持它引用的(在本例中是临时的)对象,直到引用本身超出范围。如果您查看 QVariant 的实现,您会发现它复制了值。
这里没有问题 - 继续前进。
关于c++ - 我如何使用与 QVariant 相关的 QComboBox?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37512243/