类似于这种:

就是右下角这个框,有属性名字和对应的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. QT_BEGIN_NAMESPACE
  9.  
  10. class QDockWidget;
  11. class QtVariantPropertyManager;
  12. class QtProperty;
  13. class QtVariantProperty;
  14. class QtVariantEditorFactory;
  15. class QtTreePropertyBrowser;
  16. QT_END_NAMESPACE
  17.  
  18. class NodePropertyWidget:public QDockWidget
  19. {
  20. public:
  21.  
  22. NodePropertyWidget(DiagramItem::DiagramType type, QWidget* parent = );
  23. ~NodePropertyWidget();
  24.  
  25. private:
  26. void createProcessTreeProperty();
  27. void createDisplayTreeProperty();
  28. void createArrowTreeProperty();
  29.  
  30. private:
  31. QtVariantPropertyManager *variantManager;
  32. QtProperty *topItem;
  33. QtVariantProperty *item;
  34. QtVariantEditorFactory *variantFactory;
  35. QtTreePropertyBrowser *variantEditor;
  36. };
  37.  
  38. #endif

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

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

references:

https://github.com/commontk/QtPropertyBrowser

Qt编程之实现属性窗口编辑器的更多相关文章

  1. Qt编程—去掉标题栏和设置窗口透明用法

    学习Qt编程,有时候我们很想做出好看又比较炫的画面,这时就常用到qt上的一些技巧. 这里我以一个小例子来展示qt的这些技巧,此qt编程写的,如图:(去掉标题栏和设置窗口透明后) 代码实现部分: .h文 ...

  2. 零基础学QT编程

    吴迪.2010.1 北京航空航天大学出版社   Qt资源 CSDN QT http://bbs.csdn.net/forums/Qt/ QT编程网 http://www.qtbcw.com/ 编程论坛 ...

  3. Qt编程之信号与槽-------unresolved external symbol "public: virtual struct QMetaObject const * __thiscall XX::metaObject(void)const

    原因是加入Q_OBJECT这个macro的类,被编译的时候就要用到moc这个命令,所以在VS2010中,没有加入此命令的应用,当然会出错了.所以解决办法是加,或者如果你不使用信号槽可以直接删除. 当要 ...

  4. Qt编程之悲惨世界

    最近需要给人写点基于QtWebkit的代码,算是领教了Qt编程的痛苦之处. QNetworkConfigurationManager::isOnline() 只有在编译平台上能运行,拷贝到其他Wind ...

  5. Qt编程简介与基本知识

    1. 什么是Qt? Qt是一个基于C++的跨平台应用程序和UI开发框架.它包含一个类库,和用于跨平台开发及国际化的工具. 由挪威Trolltech公司开发,后被Nokia收购,目前被Digia公司收购 ...

  6. Qt编写控件属性设计器

    一.前言 自从研究Qt编写自定义控件以来,一发不可收拾,越多越多人有类似的需求找我定制控件,陆陆续续写了上百个控件,目前已超过150个,于是逐渐衍生了另外一个需求,提供一个控件属性设计器,类似QtDe ...

  7. 73 QT编程入门

    0 引言 最近开始在QT下编程,记录一下遇到的问题以及解决方法. 1 安装下载及学习资料 (1)安装下载链接 安装链接: https://blog.csdn.net/qq_23473839/artic ...

  8. qt编程入门

    面对qt编程,必须先知道qt中常用的类: QPushButton按钮类.QLabel标签类.QMessageBox对话框类.QCheckBox.QAction.QMenu.QStatusBar.QTo ...

  9. qt如何实现一个渐隐窗口呢(开启的时候他是从上往下渐渐显示)

    qt如何实现一个渐隐窗口呢?就是比如说开启的时候他是从上往下渐渐显示的,关闭的时候从下往上渐渐小时的http://stackoverflow.com/questions/19087822/how-to ...

随机推荐

  1. Mac下Sublime Text 3安装配置

    1.下载Sublime Text 3 2.安装Package Control,参考 快捷键 control + ` 或者菜单栏选择View > Show Console 在控制台输入: impo ...

  2. Android笔记(一):从this关键字发散

    this指的是直接包含它的类的实例. 例如: public class MyClass{ int num; public MyClass(int num){ this.num = num; } } 这 ...

  3. iOS语音识别,语音播报,文字变语音播报,语音变文字

    首先使用的是科大讯飞的sdk 1.语音识别部分 AppDelegate.m #import "AppDelegate.h" #import <iflyMSC/iflyMSC. ...

  4. nginx本地的测试环境添加SSL

    要在本地添加SSL,首先要做的是防火墙是不是放开了443端口,同时,在nginx安装时是不是支持了ssl模块,这个安装网上很容易找到相关资料 防火墙,个人还是用iptables比较直观 先将selin ...

  5. javascript中this、apply、call、bind的用法和区别

    参考阮一峰文章链接:http://javascript.ruanyifeng.com/oop/basic.html#toc10

  6. js函数收藏:获取cookie值

    //先设置一段子cookie var d = new Date(); d.setMonth(d.getMonth() + 1); d = d.toGMTString(); var a = " ...

  7. asp.net 分页类

    PaginatedList.cs using System;using System.Collections.Generic;using System.Linq;using System.Web; n ...

  8. Using HttpClient properly to avoid CLOSE_WAIT TCP connections

    Apache的HttpComponent组件,用的人不在少数.但是能用好的人,却微乎其微,为什么?很简单,TCP里面的细节实现不是每个人都能捕获到的(细节是魔鬼),像并发请求控制&资源释放,N ...

  9. 【蓝桥杯】PREV-5 错误票据

    题目链接:gpid=T28">http://lx.lanqiao.org/problem.page? gpid=T28   历届试题 错误票据   时间限制:1.0s   内存限制:2 ...

  10. 1034 - Navigation

    Global Positioning System (GPS) is a navigation system based on a set of satellites orbiting approxi ...