• Qt编程之实现属性窗口编辑器


    类似于这种:

    就是右下角这个框,有属性名字和对应的value编辑。

    这个Widget是作为一个QDockWidget被添加到QMainWindow中的。QMainWindow必须要有centralWidget才能添加DockWidget。DockWidget是可以浮动于centralWidget周边(上下左右)的一种Widget。QMainWindow中有addDockWiget这相应的函数添加。

    而QDockWidget中可以设置相应的Widget,这个Widget(实际上就是属性编辑浏览窗口。)这个Widget实际上不是Qt Native自带的。而是Qt的解决方案中提供的Widget,也就是别人帮你封装做好了Widget,拿来用就可以了。这个Widget就是QtPropertyBrowser

    样例代码:

    nodeproperty.h  此类继承了QDockWidget

     1 #ifndef NODE_PROPERTY_H
     2 #define NODE_PROPERTY_H
     3 
     4 #include <QObject>
     5 #include <QDockWidget>
     6 #include "diagramitem.h"
     7 
     8 
     9 QT_BEGIN_NAMESPACE
    10 
    11 class QDockWidget;
    12 class QtVariantPropertyManager;
    13 class QtProperty;
    14 class QtVariantProperty;
    15 class QtVariantEditorFactory;
    16 class QtTreePropertyBrowser;
    17 QT_END_NAMESPACE
    18 
    19 
    20 class NodePropertyWidget:public  QDockWidget
    21 {
    22 public:
    23     
    24     NodePropertyWidget(DiagramItem::DiagramType type, QWidget* parent = 0);
    25     ~NodePropertyWidget();
    26 
    27 private:
    28     void createProcessTreeProperty();
    29     void createDisplayTreeProperty();
    30     void createArrowTreeProperty();
    31 
    32 private:
    33     QtVariantPropertyManager *variantManager;
    34     QtProperty *topItem;
    35     QtVariantProperty *item;
    36     QtVariantEditorFactory *variantFactory;
    37     QtTreePropertyBrowser *variantEditor;
    38 };
    39 
    40 
    41 
    42 
    43 #endif
    View Code

    nodeproperty.cpp

      1 #include <QDate>
      2 #include <QLocale>
      3 #include <QDockWidget>
      4 #include <QSizePolicy>
      5 
      6 #include "qtpropertymanager.h"
      7 #include "qtvariantproperty.h"
      8 #include "qttreepropertybrowser.h"
      9 
     10 #include "nodeproperty.h"
     11 
     12 
     13 
     14 
     15 
     16 NodePropertyWidget::NodePropertyWidget(DiagramItem::DiagramType type, QWidget * parent) :QDockWidget(parent)
     17 {
     18     
     19     switch (type)
     20     {
     21     case DiagramItem::Process:
     22         setWindowTitle("Process Property");
     23         setFloating(true);
     24         
     25         setAllowedAreas(Qt::RightDockWidgetArea);
     26         setSizePolicy(QSizePolicy::Policy::Preferred, QSizePolicy::Policy::Preferred);
     27         createProcessTreeProperty();
     28         break;
     29     case DiagramItem::Display:
     30         setWindowTitle("Display Property");
     31         setFloating(true);
     32         
     33         setAllowedAreas(Qt::RightDockWidgetArea);
     34         setSizePolicy(QSizePolicy::Policy::Preferred, QSizePolicy::Policy::Preferred);
     35         createDisplayTreeProperty();
     36         break;
     37     case DiagramItem::Line:
     38         setWindowTitle("Arrow Property");
     39         setFloating(true);
     40         
     41         setAllowedAreas(Qt::RightDockWidgetArea);
     42         setSizePolicy(QSizePolicy::Policy::Preferred, QSizePolicy::Policy::Preferred);
     43         createArrowTreeProperty();
     44         break;
     45     default:
     46         break;
     47     }
     48 }
     49 
     50 NodePropertyWidget::~NodePropertyWidget()
     51 {
     52 
     53     delete variantManager;
     54     delete variantFactory;
     55     delete variantEditor;
     56 }
     57 
     58 
     59 void NodePropertyWidget::createProcessTreeProperty(){
     60 
     61     variantManager = new QtVariantPropertyManager();
     62 
     63     int i = 0;
     64     topItem = variantManager->addProperty(QtVariantPropertyManager::groupTypeId(),
     65         QString::number(i++) + QLatin1String("Process Property"));
     66 
     67     item = variantManager->addProperty(QVariant::Bool, QString::number(i++) + QLatin1String(" Bool Property"));
     68     item->setValue(true);
     69     topItem->addSubProperty(item);
     70 
     71     item = variantManager->addProperty(QVariant::Int, QString::number(i++) + QLatin1String(" Int Property"));
     72     item->setValue(20);
     73     item->setAttribute(QLatin1String("minimum"), 0);
     74     item->setAttribute(QLatin1String("maximum"), 100);
     75     item->setAttribute(QLatin1String("singleStep"), 10);
     76     topItem->addSubProperty(item);
     77 
     78     item = variantManager->addProperty(QVariant::Int, QString::number(i++) + QLatin1String(" Int Property (ReadOnly)"));
     79     item->setValue(20);
     80     item->setAttribute(QLatin1String("minimum"), 0);
     81     item->setAttribute(QLatin1String("maximum"), 100);
     82     item->setAttribute(QLatin1String("singleStep"), 10);
     83     item->setAttribute(QLatin1String("readOnly"), true);
     84     topItem->addSubProperty(item);
     85 
     86     item = variantManager->addProperty(QVariant::Double, QString::number(i++) + QLatin1String(" Double Property"));
     87     item->setValue(1.2345);
     88     item->setAttribute(QLatin1String("singleStep"), 0.1);
     89     item->setAttribute(QLatin1String("decimals"), 3);
     90     topItem->addSubProperty(item);
     91 
     92     item = variantManager->addProperty(QVariant::Double, QString::number(i++) + QLatin1String(" Double Property (ReadOnly)"));
     93     item->setValue(1.23456);
     94     item->setAttribute(QLatin1String("singleStep"), 0.1);
     95     item->setAttribute(QLatin1String("decimals"), 5);
     96     item->setAttribute(QLatin1String("readOnly"), true);
     97     topItem->addSubProperty(item);
     98 
     99     item = variantManager->addProperty(QVariant::String, QString::number(i++) + QLatin1String(" String Property"));
    100     item->setValue("Value");
    101     topItem->addSubProperty(item);
    102 
    103     item = variantManager->addProperty(QVariant::String, QString::number(i++) + QLatin1String(" String Property (Password)"));
    104     item->setAttribute(QLatin1String("echoMode"), QLineEdit::Password);
    105     item->setValue("Password");
    106     topItem->addSubProperty(item);
    107 
    108     // Readonly String Property
    109     item = variantManager->addProperty(QVariant::String, QString::number(i++) + QLatin1String(" String Property (ReadOnly)"));
    110     item->setAttribute(QLatin1String("readOnly"), true);
    111     item->setValue("readonly text");
    112     topItem->addSubProperty(item);
    113 
    114     item = variantManager->addProperty(QVariant::Date, QString::number(i++) + QLatin1String(" Date Property"));
    115     item->setValue(QDate::currentDate().addDays(2));
    116     topItem->addSubProperty(item);
    117 
    118     item = variantManager->addProperty(QVariant::Time, QString::number(i++) + QLatin1String(" Time Property"));
    119     item->setValue(QTime::currentTime());
    120     topItem->addSubProperty(item);
    121 
    122     item = variantManager->addProperty(QVariant::DateTime, QString::number(i++) + QLatin1String(" DateTime Property"));
    123     item->setValue(QDateTime::currentDateTime());
    124     topItem->addSubProperty(item);
    125 
    126     item = variantManager->addProperty(QVariant::KeySequence, QString::number(i++) + QLatin1String(" KeySequence Property"));
    127     item->setValue(QKeySequence(Qt::ControlModifier | Qt::Key_Q));
    128     topItem->addSubProperty(item);
    129 
    130     item = variantManager->addProperty(QVariant::Char, QString::number(i++) + QLatin1String(" Char Property"));
    131     item->setValue(QChar(386));
    132     topItem->addSubProperty(item);
    133 
    134     item = variantManager->addProperty(QVariant::Locale, QString::number(i++) + QLatin1String(" Locale Property"));
    135     item->setValue(QLocale(QLocale::Polish, QLocale::Poland));
    136     topItem->addSubProperty(item);
    137 
    138     item = variantManager->addProperty(QVariant::Point, QString::number(i++) + QLatin1String(" Point Property"));
    139     item->setValue(QPoint(10, 10));
    140     topItem->addSubProperty(item);
    141 
    142     item = variantManager->addProperty(QVariant::PointF, QString::number(i++) + QLatin1String(" PointF Property"));
    143     item->setValue(QPointF(1.2345, -1.23451));
    144     item->setAttribute(QLatin1String("decimals"), 3);
    145     topItem->addSubProperty(item);
    146 
    147     item = variantManager->addProperty(QVariant::Size, QString::number(i++) + QLatin1String(" Size Property"));
    148     item->setValue(QSize(20, 20));
    149     item->setAttribute(QLatin1String("minimum"), QSize(10, 10));
    150     item->setAttribute(QLatin1String("maximum"), QSize(30, 30));
    151     topItem->addSubProperty(item);
    152 
    153     item = variantManager->addProperty(QVariant::SizeF, QString::number(i++) + QLatin1String(" SizeF Property"));
    154     item->setValue(QSizeF(1.2345, 1.2345));
    155     item->setAttribute(QLatin1String("decimals"), 3);
    156     item->setAttribute(QLatin1String("minimum"), QSizeF(0.12, 0.34));
    157     item->setAttribute(QLatin1String("maximum"), QSizeF(20.56, 20.78));
    158     topItem->addSubProperty(item);
    159 
    160     item = variantManager->addProperty(QVariant::Rect, QString::number(i++) + QLatin1String(" Rect Property"));
    161     item->setValue(QRect(10, 10, 20, 20));
    162     topItem->addSubProperty(item);
    163     item->setAttribute(QLatin1String("constraint"), QRect(0, 0, 50, 50));
    164 
    165     item = variantManager->addProperty(QVariant::RectF, QString::number(i++) + QLatin1String(" RectF Property"));
    166     item->setValue(QRectF(1.2345, 1.2345, 1.2345, 1.2345));
    167     topItem->addSubProperty(item);
    168     item->setAttribute(QLatin1String("constraint"), QRectF(0, 0, 50, 50));
    169     item->setAttribute(QLatin1String("decimals"), 3);
    170 
    171     item = variantManager->addProperty(QtVariantPropertyManager::enumTypeId(),
    172         QString::number(i++) + QLatin1String(" Enum Property"));
    173     QStringList enumNames;
    174     enumNames << "Enum0" << "Enum1" << "Enum2";
    175     item->setAttribute(QLatin1String("enumNames"), enumNames);
    176     item->setValue(1);
    177     topItem->addSubProperty(item);
    178 
    179     item = variantManager->addProperty(QtVariantPropertyManager::flagTypeId(),
    180         QString::number(i++) + QLatin1String(" Flag Property"));
    181     QStringList flagNames;
    182     flagNames << "Flag0" << "Flag1" << "Flag2";
    183     item->setAttribute(QLatin1String("flagNames"), flagNames);
    184     item->setValue(5);
    185     topItem->addSubProperty(item);
    186 
    187     item = variantManager->addProperty(QVariant::SizePolicy, QString::number(i++) + QLatin1String(" SizePolicy Property"));
    188     topItem->addSubProperty(item);
    189 
    190     item = variantManager->addProperty(QVariant::Font, QString::number(i++) + QLatin1String(" Font Property"));
    191     topItem->addSubProperty(item);
    192 
    193     item = variantManager->addProperty(QVariant::Cursor, QString::number(i++) + QLatin1String(" Cursor Property"));
    194     topItem->addSubProperty(item);
    195 
    196     item = variantManager->addProperty(QVariant::Color, QString::number(i++) + QLatin1String(" Color Property"));
    197     topItem->addSubProperty(item);
    198 
    199     variantFactory = new QtVariantEditorFactory();
    200 
    201     variantEditor = new QtTreePropertyBrowser();
    202     variantEditor->setFactoryForManager(variantManager, variantFactory);
    203     variantEditor->addProperty(topItem);
    204     variantEditor->setPropertiesWithoutValueMarked(true);
    205     variantEditor->setRootIsDecorated(false);
    206 
    207     setWidget(variantEditor);
    208 
    209     //variantEditor->show();
    210 
    211 }
    212 
    213 void NodePropertyWidget::createDisplayTreeProperty(){
    214 
    215     variantManager = new QtVariantPropertyManager();
    216 
    217     int i = 0;
    218     topItem = variantManager->addProperty(QtVariantPropertyManager::groupTypeId(),
    219         QString::number(i++) + QLatin1String(" Display Property"));
    220 
    221     item = variantManager->addProperty(QVariant::Bool, QString::number(i++) + QLatin1String(" Bool Property"));
    222     item->setValue(true);
    223     topItem->addSubProperty(item);
    224 
    225     item = variantManager->addProperty(QVariant::Int, QString::number(i++) + QLatin1String(" Int Property"));
    226     item->setValue(20);
    227     item->setAttribute(QLatin1String("minimum"), 0);
    228     item->setAttribute(QLatin1String("maximum"), 100);
    229     item->setAttribute(QLatin1String("singleStep"), 10);
    230     topItem->addSubProperty(item);
    231 
    232     item = variantManager->addProperty(QVariant::Int, QString::number(i++) + QLatin1String(" Int Property (ReadOnly)"));
    233     item->setValue(20);
    234     item->setAttribute(QLatin1String("minimum"), 0);
    235     item->setAttribute(QLatin1String("maximum"), 100);
    236     item->setAttribute(QLatin1String("singleStep"), 10);
    237     item->setAttribute(QLatin1String("readOnly"), true);
    238     topItem->addSubProperty(item);
    239 
    240     item = variantManager->addProperty(QVariant::Double, QString::number(i++) + QLatin1String(" Double Property"));
    241     item->setValue(1.2345);
    242     item->setAttribute(QLatin1String("singleStep"), 0.1);
    243     item->setAttribute(QLatin1String("decimals"), 3);
    244     topItem->addSubProperty(item);
    245 
    246     item = variantManager->addProperty(QVariant::Double, QString::number(i++) + QLatin1String(" Double Property (ReadOnly)"));
    247     item->setValue(1.23456);
    248     item->setAttribute(QLatin1String("singleStep"), 0.1);
    249     item->setAttribute(QLatin1String("decimals"), 5);
    250     item->setAttribute(QLatin1String("readOnly"), true);
    251     topItem->addSubProperty(item);
    252 
    253     item = variantManager->addProperty(QVariant::String, QString::number(i++) + QLatin1String(" String Property"));
    254     item->setValue("Value");
    255     topItem->addSubProperty(item);
    256 
    257     item = variantManager->addProperty(QVariant::String, QString::number(i++) + QLatin1String(" String Property (Password)"));
    258     item->setAttribute(QLatin1String("echoMode"), QLineEdit::Password);
    259     item->setValue("Password");
    260     topItem->addSubProperty(item);
    261 
    262     // Readonly String Property
    263     item = variantManager->addProperty(QVariant::String, QString::number(i++) + QLatin1String(" String Property (ReadOnly)"));
    264     item->setAttribute(QLatin1String("readOnly"), true);
    265     item->setValue("readonly text");
    266     topItem->addSubProperty(item);
    267 
    268     item = variantManager->addProperty(QVariant::Date, QString::number(i++) + QLatin1String(" Date Property"));
    269     item->setValue(QDate::currentDate().addDays(2));
    270     topItem->addSubProperty(item);
    271 
    272     item = variantManager->addProperty(QVariant::Time, QString::number(i++) + QLatin1String(" Time Property"));
    273     item->setValue(QTime::currentTime());
    274     topItem->addSubProperty(item);
    275 
    276     item = variantManager->addProperty(QVariant::DateTime, QString::number(i++) + QLatin1String(" DateTime Property"));
    277     item->setValue(QDateTime::currentDateTime());
    278     topItem->addSubProperty(item);
    279 
    280     item = variantManager->addProperty(QVariant::KeySequence, QString::number(i++) + QLatin1String(" KeySequence Property"));
    281     item->setValue(QKeySequence(Qt::ControlModifier | Qt::Key_Q));
    282     topItem->addSubProperty(item);
    283 
    284     item = variantManager->addProperty(QVariant::Char, QString::number(i++) + QLatin1String(" Char Property"));
    285     item->setValue(QChar(386));
    286     topItem->addSubProperty(item);
    287 
    288     item = variantManager->addProperty(QVariant::Locale, QString::number(i++) + QLatin1String(" Locale Property"));
    289     item->setValue(QLocale(QLocale::Polish, QLocale::Poland));
    290     topItem->addSubProperty(item);
    291 
    292     item = variantManager->addProperty(QVariant::Point, QString::number(i++) + QLatin1String(" Point Property"));
    293     item->setValue(QPoint(10, 10));
    294     topItem->addSubProperty(item);
    295 
    296     item = variantManager->addProperty(QVariant::PointF, QString::number(i++) + QLatin1String(" PointF Property"));
    297     item->setValue(QPointF(1.2345, -1.23451));
    298     item->setAttribute(QLatin1String("decimals"), 3);
    299     topItem->addSubProperty(item);
    300 
    301     item = variantManager->addProperty(QVariant::Size, QString::number(i++) + QLatin1String(" Size Property"));
    302     item->setValue(QSize(20, 20));
    303     item->setAttribute(QLatin1String("minimum"), QSize(10, 10));
    304     item->setAttribute(QLatin1String("maximum"), QSize(30, 30));
    305     topItem->addSubProperty(item);
    306 
    307     item = variantManager->addProperty(QVariant::SizeF, QString::number(i++) + QLatin1String(" SizeF Property"));
    308     item->setValue(QSizeF(1.2345, 1.2345));
    309     item->setAttribute(QLatin1String("decimals"), 3);
    310     item->setAttribute(QLatin1String("minimum"), QSizeF(0.12, 0.34));
    311     item->setAttribute(QLatin1String("maximum"), QSizeF(20.56, 20.78));
    312     topItem->addSubProperty(item);
    313 
    314     item = variantManager->addProperty(QVariant::Rect, QString::number(i++) + QLatin1String(" Rect Property"));
    315     item->setValue(QRect(10, 10, 20, 20));
    316     topItem->addSubProperty(item);
    317     item->setAttribute(QLatin1String("constraint"), QRect(0, 0, 50, 50));
    318 
    319     item = variantManager->addProperty(QVariant::RectF, QString::number(i++) + QLatin1String(" RectF Property"));
    320     item->setValue(QRectF(1.2345, 1.2345, 1.2345, 1.2345));
    321     topItem->addSubProperty(item);
    322     item->setAttribute(QLatin1String("constraint"), QRectF(0, 0, 50, 50));
    323     item->setAttribute(QLatin1String("decimals"), 3);
    324 
    325     item = variantManager->addProperty(QtVariantPropertyManager::enumTypeId(),
    326         QString::number(i++) + QLatin1String(" Enum Property"));
    327     QStringList enumNames;
    328     enumNames << "Enum0" << "Enum1" << "Enum2";
    329     item->setAttribute(QLatin1String("enumNames"), enumNames);
    330     item->setValue(1);
    331     topItem->addSubProperty(item);
    332 
    333     item = variantManager->addProperty(QtVariantPropertyManager::flagTypeId(),
    334         QString::number(i++) + QLatin1String(" Flag Property"));
    335     QStringList flagNames;
    336     flagNames << "Flag0" << "Flag1" << "Flag2";
    337     item->setAttribute(QLatin1String("flagNames"), flagNames);
    338     item->setValue(5);
    339     topItem->addSubProperty(item);
    340 
    341     item = variantManager->addProperty(QVariant::SizePolicy, QString::number(i++) + QLatin1String(" SizePolicy Property"));
    342     topItem->addSubProperty(item);
    343 
    344     item = variantManager->addProperty(QVariant::Font, QString::number(i++) + QLatin1String(" Font Property"));
    345     topItem->addSubProperty(item);
    346 
    347     item = variantManager->addProperty(QVariant::Cursor, QString::number(i++) + QLatin1String(" Cursor Property"));
    348     topItem->addSubProperty(item);
    349 
    350     item = variantManager->addProperty(QVariant::Color, QString::number(i++) + QLatin1String(" Color Property"));
    351     topItem->addSubProperty(item);
    352 
    353     variantFactory = new QtVariantEditorFactory();
    354 
    355     variantEditor = new QtTreePropertyBrowser();
    356     variantEditor->setFactoryForManager(variantManager, variantFactory);
    357     variantEditor->addProperty(topItem);
    358     variantEditor->setPropertiesWithoutValueMarked(true);
    359     variantEditor->setRootIsDecorated(false);
    360 
    361     setWidget(variantEditor);
    362 
    363     //variantEditor->show();
    364 
    365 }
    366 
    367 void NodePropertyWidget::createArrowTreeProperty(){
    368 
    369     variantManager = new QtVariantPropertyManager();
    370 
    371     int i = 0;
    372     topItem = variantManager->addProperty(QtVariantPropertyManager::groupTypeId(),
    373         QString::number(i++) + QLatin1String("Arrow Property"));
    374 
    375     item = variantManager->addProperty(QVariant::Bool, QString::number(i++) + QLatin1String(" Bool Property"));
    376     item->setValue(true);
    377     topItem->addSubProperty(item);
    378 
    379     item = variantManager->addProperty(QVariant::Int, QString::number(i++) + QLatin1String(" Int Property"));
    380     item->setValue(20);
    381     item->setAttribute(QLatin1String("minimum"), 0);
    382     item->setAttribute(QLatin1String("maximum"), 100);
    383     item->setAttribute(QLatin1String("singleStep"), 10);
    384     topItem->addSubProperty(item);
    385 
    386     item = variantManager->addProperty(QVariant::Int, QString::number(i++) + QLatin1String(" Int Property (ReadOnly)"));
    387     item->setValue(20);
    388     item->setAttribute(QLatin1String("minimum"), 0);
    389     item->setAttribute(QLatin1String("maximum"), 100);
    390     item->setAttribute(QLatin1String("singleStep"), 10);
    391     item->setAttribute(QLatin1String("readOnly"), true);
    392     topItem->addSubProperty(item);
    393 
    394     item = variantManager->addProperty(QVariant::Double, QString::number(i++) + QLatin1String(" Double Property"));
    395     item->setValue(1.2345);
    396     item->setAttribute(QLatin1String("singleStep"), 0.1);
    397     item->setAttribute(QLatin1String("decimals"), 3);
    398     topItem->addSubProperty(item);
    399 
    400     item = variantManager->addProperty(QVariant::Double, QString::number(i++) + QLatin1String(" Double Property (ReadOnly)"));
    401     item->setValue(1.23456);
    402     item->setAttribute(QLatin1String("singleStep"), 0.1);
    403     item->setAttribute(QLatin1String("decimals"), 5);
    404     item->setAttribute(QLatin1String("readOnly"), true);
    405     topItem->addSubProperty(item);
    406 
    407     item = variantManager->addProperty(QVariant::String, QString::number(i++) + QLatin1String(" String Property"));
    408     item->setValue("Value");
    409     topItem->addSubProperty(item);
    410 
    411     item = variantManager->addProperty(QVariant::String, QString::number(i++) + QLatin1String(" String Property (Password)"));
    412     item->setAttribute(QLatin1String("echoMode"), QLineEdit::Password);
    413     item->setValue("Password");
    414     topItem->addSubProperty(item);
    415 
    416     // Readonly String Property
    417     item = variantManager->addProperty(QVariant::String, QString::number(i++) + QLatin1String(" String Property (ReadOnly)"));
    418     item->setAttribute(QLatin1String("readOnly"), true);
    419     item->setValue("readonly text");
    420     topItem->addSubProperty(item);
    421 
    422     item = variantManager->addProperty(QVariant::Date, QString::number(i++) + QLatin1String(" Date Property"));
    423     item->setValue(QDate::currentDate().addDays(2));
    424     topItem->addSubProperty(item);
    425 
    426     item = variantManager->addProperty(QVariant::Time, QString::number(i++) + QLatin1String(" Time Property"));
    427     item->setValue(QTime::currentTime());
    428     topItem->addSubProperty(item);
    429 
    430     item = variantManager->addProperty(QVariant::DateTime, QString::number(i++) + QLatin1String(" DateTime Property"));
    431     item->setValue(QDateTime::currentDateTime());
    432     topItem->addSubProperty(item);
    433 
    434     item = variantManager->addProperty(QVariant::KeySequence, QString::number(i++) + QLatin1String(" KeySequence Property"));
    435     item->setValue(QKeySequence(Qt::ControlModifier | Qt::Key_Q));
    436     topItem->addSubProperty(item);
    437 
    438     item = variantManager->addProperty(QVariant::Char, QString::number(i++) + QLatin1String(" Char Property"));
    439     item->setValue(QChar(386));
    440     topItem->addSubProperty(item);
    441 
    442     item = variantManager->addProperty(QVariant::Locale, QString::number(i++) + QLatin1String(" Locale Property"));
    443     item->setValue(QLocale(QLocale::Polish, QLocale::Poland));
    444     topItem->addSubProperty(item);
    445 
    446     item = variantManager->addProperty(QVariant::Point, QString::number(i++) + QLatin1String(" Point Property"));
    447     item->setValue(QPoint(10, 10));
    448     topItem->addSubProperty(item);
    449 
    450     item = variantManager->addProperty(QVariant::PointF, QString::number(i++) + QLatin1String(" PointF Property"));
    451     item->setValue(QPointF(1.2345, -1.23451));
    452     item->setAttribute(QLatin1String("decimals"), 3);
    453     topItem->addSubProperty(item);
    454 
    455     item = variantManager->addProperty(QVariant::Size, QString::number(i++) + QLatin1String(" Size Property"));
    456     item->setValue(QSize(20, 20));
    457     item->setAttribute(QLatin1String("minimum"), QSize(10, 10));
    458     item->setAttribute(QLatin1String("maximum"), QSize(30, 30));
    459     topItem->addSubProperty(item);
    460 
    461     item = variantManager->addProperty(QVariant::SizeF, QString::number(i++) + QLatin1String(" SizeF Property"));
    462     item->setValue(QSizeF(1.2345, 1.2345));
    463     item->setAttribute(QLatin1String("decimals"), 3);
    464     item->setAttribute(QLatin1String("minimum"), QSizeF(0.12, 0.34));
    465     item->setAttribute(QLatin1String("maximum"), QSizeF(20.56, 20.78));
    466     topItem->addSubProperty(item);
    467 
    468     item = variantManager->addProperty(QVariant::Rect, QString::number(i++) + QLatin1String(" Rect Property"));
    469     item->setValue(QRect(10, 10, 20, 20));
    470     topItem->addSubProperty(item);
    471     item->setAttribute(QLatin1String("constraint"), QRect(0, 0, 50, 50));
    472 
    473     item = variantManager->addProperty(QVariant::RectF, QString::number(i++) + QLatin1String(" RectF Property"));
    474     item->setValue(QRectF(1.2345, 1.2345, 1.2345, 1.2345));
    475     topItem->addSubProperty(item);
    476     item->setAttribute(QLatin1String("constraint"), QRectF(0, 0, 50, 50));
    477     item->setAttribute(QLatin1String("decimals"), 3);
    478 
    479     item = variantManager->addProperty(QtVariantPropertyManager::enumTypeId(),
    480         QString::number(i++) + QLatin1String(" Enum Property"));
    481     QStringList enumNames;
    482     enumNames << "Enum0" << "Enum1" << "Enum2";
    483     item->setAttribute(QLatin1String("enumNames"), enumNames);
    484     item->setValue(1);
    485     topItem->addSubProperty(item);
    486 
    487     item = variantManager->addProperty(QtVariantPropertyManager::flagTypeId(),
    488         QString::number(i++) + QLatin1String(" Flag Property"));
    489     QStringList flagNames;
    490     flagNames << "Flag0" << "Flag1" << "Flag2";
    491     item->setAttribute(QLatin1String("flagNames"), flagNames);
    492     item->setValue(5);
    493     topItem->addSubProperty(item);
    494 
    495     item = variantManager->addProperty(QVariant::SizePolicy, QString::number(i++) + QLatin1String(" SizePolicy Property"));
    496     topItem->addSubProperty(item);
    497 
    498     item = variantManager->addProperty(QVariant::Font, QString::number(i++) + QLatin1String(" Font Property"));
    499     topItem->addSubProperty(item);
    500 
    501     item = variantManager->addProperty(QVariant::Cursor, QString::number(i++) + QLatin1String(" Cursor Property"));
    502     topItem->addSubProperty(item);
    503 
    504     item = variantManager->addProperty(QVariant::Color, QString::number(i++) + QLatin1String(" Color Property"));
    505     topItem->addSubProperty(item);
    506 
    507     variantFactory = new QtVariantEditorFactory();
    508 
    509     variantEditor = new QtTreePropertyBrowser();
    510     variantEditor->setFactoryForManager(variantManager, variantFactory);
    511     variantEditor->addProperty(topItem);
    512     variantEditor->setPropertiesWithoutValueMarked(true);
    513     variantEditor->setRootIsDecorated(false);
    514 
    515     setWidget(variantEditor);
    516     //variantEditor->show();
    517 
    518 }
    View Code

    以下的参考中还会给出很多propertybrowser的很多例子

    references:

    https://github.com/commontk/QtPropertyBrowser

  • 相关阅读:
    P3368 【模板】树状数组 2
    P3374 【模板】树状数组 1
    P1631 序列合并
    P1387 最大正方形
    P1197 [JSOI2008]星球大战
    P2866 [USACO06NOV]糟糕的一天Bad Hair Day
    P1196 [NOI2002]银河英雄传说
    SP1805 HISTOGRA
    P1334 瑞瑞的木板
    2019信息学夏令营游记
  • 原文地址:https://www.cnblogs.com/foohack/p/4553802.html
Copyright © 2020-2023  润新知