gpt4 book ai didi

c++ - Qt:在 QComboBox 中使用枚举

转载 作者:可可西里 更新时间:2023-11-01 15:05:37 24 4
gpt4 key购买 nike

我有一组参数需要编辑,其中一些是枚举。

到今天为止,我在 QSpinBox 中使用枚举的原始值,这一点都不友好。你必须自己记住这些值并设置好的:

my parameter editor

例如,E_Range 可以显示一个组合框,其中包含:

typedef enum {
ERANGE_2_5 = 0, /*!< +/- 2.5 V */
ERANGE_5 = 1, /*!< +/- 5 V */
ERANGE_10 = 2, /*!< +/- 10 V */
ERANGE_AUTO = 3 /*!< Auto range */
} TVoltageRange_e;

我没有找到任何有关在 QComboBox 中使用枚举的信息。可能吗?
如果是,步骤是什么?

我的意思是,我想我必须通过 Qt 声明枚举,以便它可以通过 Qt 元对象“枚举”。但从那里,我不确定。

最佳答案

当然,您始终可以对这些值进行硬编码,但是一旦您修改了该枚举,您就必须记住更改填充组合框的代码。

I mean, I guess I'll have to declare the enum through Qt so that it is "enumerable" with the Qt metaobject. But from there, I'm not sure.

确切地说,使用内省(introspection)是明智之举。用 Q_ENUMS 标记枚举并添加 Q_OBJECT 宏。然后:

  • 通过 Class::staticMetaObject() 获取类的元对象
  • 通过 QMetaObject::indexOfEnumerator() + QMetaObject::enumerator() 为您的枚举获取 QMetaEnum
  • 通过QMetaEnum::keyCount()获取键的个数,迭代获取键名及其对应的值(QMetaEnum::key(), QMetaEnum::keyToValue()).

有了这个,您将能够以编程方式填充您的组合框(典型的模式是添加枚举键作为用户可见的字符串,并将相应的值添加为其“项目数据”,参见。QComboBox 的文档。)

关于c++ - Qt:在 QComboBox 中使用枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16955918/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com