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

发布了257 篇原创文章 · 获赞 22 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/qq_24127015/article/details/103959291