gpt4 book ai didi

user-interface - 使用 QtPropertyBrowser 作为高级配置编辑器

转载 作者:行者123 更新时间:2023-12-04 04:30:33 44 4
gpt4 key购买 nike

有人使用 QtPropertyBrowser 作为高级配置编辑器吗?我看到的所有 GUI 示例,用于编辑 GUI 元素的属性。但是如果我想编辑一些更抽象的东西,比如应用程序配置,我该如何开始。

这是一个例子:

我正在创建一个具有多页配置对话框的应用程序。有些设置是关于打印机的,有些是关于数据库的,有些是通用应用程序设置,有些是关于模板文件名和/或模板的。但是在编辑器中设计所有这些详细的配置页面之前,我想在对话框中有一个“高级”或“专家”选项卡,其中列出了所有可以想象的配置选项。在设计过程的后期,我会收集越来越多的选项,决定哪些是“简单”的选项,以放入一些更用户友好的配置页面。谷歌搜索我发现了 QtPropertyBrowser 这似乎是正确的工具。但我不确定如何开始?我很确定,我需要某种抽象配置对象(一个或多个),而不是 GUI 对象。但我不知道从哪里或如何开始。目前我所有的想法看起来都很复杂。

有什么建议或提示吗?

最佳答案

您可能想查看通过 QMetaObject 获得的运行时类型信息。类(class)。您的数据对象应该是 QObject 的后代并声明了一个 QOBJECT 宏。您还需要一个简单的例程来遍历数据对象属性并创建和设置相应的编辑器属性。元对象还提供了一个用于重置值和方法调用的接口(interface)。关于 Qt 属性系统的更多信息在这里:The Property System .下面是一个关于如何做到这一点的小例子:

属性浏览器和管理器声明和初始化:

QtTreePropertyBrowser       *_browser;
QtIntPropertyManager *_intManager;
QtDoublePropertyManager *_doubleManager;
QtStringPropertyManager *_stringManager;

_intManager = new QtIntPropertyManager();
_doubleManager = new QtDoublePropertyManager();
_stringManager = new QtStringPropertyManager();

_browser = new QtTreePropertyBrowser(ui->centralWidget);

加载属性名称和值:

void loadProperties(QObject *object)
{
_browser->clear();
if (object)
{
const QMetaObject *meta = object->metaObject();

qDebug() << "class : " << meta->className();

for (int i=0; i<meta->propertyCount(); i++)
{
QMetaProperty metaProperty = meta->property(i);
QVariant value = metaProperty.read(object);
QtProperty *property = NULL;

qDebug() << "property : " << metaProperty.name() << " : " << value.toInt();

if (metaProperty.type() == QVariant::Int)
{
property = _intManager->addProperty(metaProperty.name());
_intManager->setValue(property, value.toInt());
}
else if (metaProperty.type() == QVariant::Double)
{
property = _doubleManager->addProperty(metaProperty.name());
_doubleManager->setValue(property, value.toDouble());
}
else if (metaProperty.type() == QVariant::String)
{
property = _stringManager->addProperty(metaProperty.name());
_stringManager->setValue(property, value.toString());
}

if (property)
_browser->addProperty(property);
}
}
}

关于user-interface - 使用 QtPropertyBrowser 作为高级配置编辑器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4229828/

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