Qt qtpropertybrowser属性列表的使用

1.首先需要安装src

2.pro里添加

include($$[QT_INSTALL_PREFIX]/../Src/qttools/src/shared/qtpropertybrowser/qtpropertybrowser.pri)

3.MainWindow.h

在界面上添加一个widget,然后吧widget提升为QtTreePropertyBrowser,名称为propertyTree

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <qtpropertybrowser.h>
#include <qtpropertymanager.h>
#include <qtvariantproperty.h>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
public slots:
    void onValueChanged(QtProperty *property, const QVariant &val);
private:
    Ui::MainWindow *ui;
    QtVariantPropertyManager *m_pVarManager;
    QtVariantPropertyManager *m_pVarManager2;
    QtVariantEditorFactory *m_pVarFactory;
    QMap<QtProperty*,QString> m_property_dic;
};

#endif // MAINWINDOW_H

4.MainWindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    m_pVarManager = new QtVariantPropertyManager(ui->propertyTree);//关联factory,属性可以修改
    m_pVarManager2 = new QtVariantPropertyManager(ui->propertyTree);//这个管理器不关联factory,属性不可修改
    m_pVarFactory = new QtVariantEditorFactory(ui->propertyTree);
    connect(m_pVarManager,&QtVariantPropertyManager::valueChanged,this, &MainWindow::onValueChanged);//绑定信号槽,当值改变的时候会发送信号
    QtVariantProperty *groupItem  = m_pVarManager->addProperty(QtVariantPropertyManager::groupTypeId(),QStringLiteral("组1"));//添加组

    QtVariantProperty *item = m_pVarManager->addProperty(QVariant::Int,QStringLiteral("整形数据:"));
    item->setValue(100);
    groupItem->addSubProperty(item);
    m_property_dic[item] = QStringLiteral("整形数据:");
    item = m_pVarManager->addProperty(QVariant::Bool,QStringLiteral("布尔型数据:"));
    item->setValue(true);
    groupItem->addSubProperty(item);
    m_property_dic[item] = QStringLiteral("布尔型数据:");
    item = m_pVarManager2->addProperty(QVariant::Bool,QStringLiteral("布尔型数据2:"));
    item->setValue(true);
    groupItem->addSubProperty(item);
    item =m_pVarManager->addProperty(QVariant::Double, QStringLiteral("浮点数据:"));
    item->setValue(3.1415926);
    groupItem->addSubProperty(item);
    m_property_dic[item] = QStringLiteral("浮点数据:");
    item =m_pVarManager->addProperty(QVariant::String, QStringLiteral("字符串数据:"));
    item->setValue(QStringLiteral("尘中远"));
    groupItem->addSubProperty(item);
    m_property_dic[item] = QStringLiteral("字符串数据:");
    ui->propertyTree->addProperty(groupItem);
    ui->propertyTree->setFactoryForManager(m_pVarManager,m_pVarFactory);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::onValueChanged(QtProperty *property, const QVariant &value)
{
    QString s =m_property_dic[property];
    qDebug()<<s<<":"<<value;
}

5.效果:

6.参考链接:

https://blog.csdn.net/czyt1988/article/details/78140050

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
QtPropertyBrowser是一个用于编辑和显示属性Qt控件库。它提供了一个可扩展的架构,可以轻松地支持各种属性类型,如布尔、整数、浮点数、字符串、颜色、文件路径等。它还支持属性分组、属性过滤和属性验证等功能。 使用QtPropertyBrowser,您可以很容易地为您的Qt应用程序创建一个属性编辑器。以下是一个简单的示例: 1. 添加依赖 首先,您需要在您的Qt项目中添加QtPropertyBrowser的依赖。您可以使用Qt的包管理器或手动下载和安装QtPropertyBrowser库。 2. 添加头文件 在您的Qt代码中,添加以下头文件: #include <QtPropertyBrowser/QtPropertyBrowser> #include <QtPropertyBrowser/QtVariantPropertyManager> #include <QtPropertyBrowser/QtTreePropertyBrowser> 3. 创建属性管理器 创建一个属性管理器,以便为您的属性提供类型和其他元数据。在本例中,我们将使用QtVariantPropertyManager: QtVariantPropertyManager *propertyManager = new QtVariantPropertyManager(); 4. 创建属性 创建一个属性,以便为您的对象提供编辑器。在本例中,我们将创建一个整数属性QtVariantProperty *property = propertyManager->addProperty(QVariant::Int, "My Property"); 5. 添加属性属性浏览器 创建一个属性浏览器,以便将您的属性显示为一个树形列表。在本例中,我们将使用QtTreePropertyBrowserQtTreePropertyBrowser *propertyBrowser = new QtTreePropertyBrowser(); propertyBrowser->setFactoryForManager(propertyManager, new QtVariantEditorFactory()); 将属性添加到属性浏览器: propertyBrowser->addProperty(property); 6. 显示属性浏览器 将属性浏览器添加到您的Qt窗口中,并显示它: QVBoxLayout *layout = new QVBoxLayout(); layout->addWidget(propertyBrowser); setLayout(layout); 您现在可以运行您的Qt应用程序,并使用属性浏览器编辑您的属性

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值