QtProperty *ShapePropertyString::getQtProperty() { QtProperty *pProp = m_stringManager->addProperty( m_sName ); pProp->setToolTip( m_sDescription ); pProp->setWhatsThis( m_sDescription ); pProp->setEnabled( m_bEnabled ); return pProp; }
QtProperty *ShapePropertyRCNames::getQtProperty() { QtProperty *pProp = m_keyMatrixNameManager->addProperty( m_sName ); pProp->setToolTip( m_sDescription ); pProp->setWhatsThis( m_sDescription ); pProp->setEnabled( m_bEnabled ); return pProp; }
void PropertyEditorView::setRootIndex(const QModelIndex &index) { mPropertyEditor->clear(); mPropertyEditor->unsetFactoryForManager(mButtonManager); mPropertyEditor->unsetFactoryForManager(mVariantManager); delete mVariantManager; delete mVariantFactory; delete mButtonManager; delete mButtonFactory; mVariantManager = new QtVariantPropertyManager(); mVariantFactory = new QtVariantEditorFactory(); mButtonManager = new PushButtonPropertyManager(); mButtonFactory = new PushButtonFactory(); mPropertyEditor->setFactoryForManager(mButtonManager, mButtonFactory); mPropertyEditor->setFactoryForManager(mVariantManager, mVariantFactory); for (int i = 0, rows = mModel->rowCount(index); i < rows; ++i) { const QModelIndex &valueCell = mModel->index(i, 1); QString name = mModel->data(mModel->index(i, 0)).toString(); const QVariant &value = mModel->data(valueCell); int type = QVariant::String; QString typeName = mModel->typeName(valueCell).toLower(); QList<QPair<QString, QString>> const values = mModel->enumValues(valueCell); bool isButton = false; if (typeName == "int") { type = QVariant::Int; } else if (typeName == "bool") { type = QVariant::Bool; } else if (typeName == "string") { type = QVariant::String; } else if (typeName == "code" || typeName == "directorypath" || typeName == "filepath") { isButton = true; } else if (!values.isEmpty()) { type = QtVariantPropertyManager::enumTypeId(); } /// @todo: Not property name should be hard-coded, new type must be introduced (like 'sdf' or 'qml')! if ((name == "shape" && typeName == "string") || mModel->isReference(valueCell, name)) { // hack isButton = true; } QtProperty *item = nullptr; if (isButton) { item = mButtonManager->addProperty(name); } else { QtVariantProperty *vItem = mVariantManager->addProperty(type, name); vItem->setValue(value); vItem->setToolTip(value.toString()); if (!values.isEmpty()) { QStringList friendlyNames; for (QPair<QString, QString> const &pair : values) { friendlyNames << pair.second; } vItem->setAttribute("enumNames", friendlyNames); vItem->setAttribute("enumEditable", mModel->enumEditable(valueCell)); const int idx = enumPropertyIndexOf(valueCell, value.toString()); if (mModel->enumEditable(valueCell)) { vItem->setValue(idx < 0 ? value.toString() : values[idx].second); } else { vItem->setValue(idx); } } item = vItem; } const QString description = propertyDescription(i); if (!description.isEmpty()) { item->setToolTip(description); } mPropertyEditor->addProperty(item); } connect(mButtonManager, SIGNAL(buttonClicked(QtProperty*)) , this, SLOT(buttonClicked(QtProperty*)), Qt::UniqueConnection); connect(mVariantManager, SIGNAL(valueChanged(QtProperty*, QVariant)) , this, SLOT(editorValueChanged(QtProperty *, QVariant)), Qt::UniqueConnection); mPropertyEditor->setPropertiesWithoutValueMarked(true); mPropertyEditor->setRootIsDecorated(false); }
QNEMainWindow::QNEMainWindow(QWidget *parent) : QMainWindow(parent) { // ------------------------------------- // central widget // ------------------------------------- QWidget *window = new QWidget(); setCentralWidget(window); QHBoxLayout *layout = new QHBoxLayout; window->setLayout(layout); // ------------------------------------- // Main menu // ------------------------------------ createMenuBar(); layout->setMenuBar(menuBar); // ------------------------------------- // Tools // ------------------------------------ QVBoxLayout *Tools_Layout = new QVBoxLayout; layout->addLayout(Tools_Layout); // ------------------------------------- // Tree // ------------------------------------ QTreeWidget *treeWidget = new QTreeWidget(); treeWidget->setColumnCount(1); treeWidget->setHeaderHidden(true); treeWidget->setFixedWidth(250); // создаем новый итем (пусть сначала базовый) QTreeWidgetItem *topLevelItem=new QTreeWidgetItem(treeWidget); // вешаем его на наше дерево в качестве топ узла. treeWidget->addTopLevelItem(topLevelItem); // укажем текст итема topLevelItem->setText(0,"Item"); // создаем новый итем и сразу вешаем его на наш базовый QTreeWidgetItem *item=new QTreeWidgetItem(topLevelItem); // укажем текст итема item->setText(0,"SubItem"); Tools_Layout->addWidget(treeWidget); // ------------------------------------- // Property Browser // ------------------------------------ QtIntPropertyManager *intManager; QtProperty *priority; intManager = new QtIntPropertyManager; priority = intManager->addProperty("Priority"); priority->setToolTip("Task Priority"); intManager->setRange(priority, 1, 5); intManager->setValue(priority, 3); QtEnumPropertyManager *enumManager=new QtEnumPropertyManager(); QtProperty *reportType; reportType = enumManager->addProperty("Report Type"); QStringList types; types << "Bug" << "Suggestion" << "To Do"; enumManager->setEnumNames(reportType, types); enumManager->setValue(reportType, 1); // "Suggestion" QtGroupPropertyManager *groupManager; QtProperty *task1; groupManager = new QtGroupPropertyManager; task1 = groupManager->addProperty("Task 1"); task1->addSubProperty(priority); task1->addSubProperty(reportType); QtSpinBoxFactory *spinBoxFactory; QtEnumEditorFactory *enumFactory; spinBoxFactory = new QtSpinBoxFactory; enumFactory = new QtEnumEditorFactory; QtTreePropertyBrowser *browser; browser = new QtTreePropertyBrowser; browser->setFactoryForManager(intManager, spinBoxFactory); browser->setFactoryForManager(enumManager, enumFactory); browser->setFixedWidth(250); browser->addProperty(task1); // browser->show(); Tools_Layout->addWidget(browser); // ------------------------------------- // Graphic view // ------------------------------------ view = new QGraphicsView(this); view->setInteractive(true); view->setBackgroundBrush(QBrush(QColor(60,60,60), Qt::SolidPattern)); scene = new QGraphicsScene(); view->setScene(scene); view->setRenderHint(QPainter::Antialiasing, true); layout->addWidget(view); // ------------------------------------- // Nodes editor // ----------------------------------- nodesEditor = new QNodesEditor(this); nodesEditor->install(scene); QNEBlock *b1 = new QNEBlock(0); scene->addItem(b1); b1->block_name="U1"; b1->block_type="Source"; b1->addOutputPort("img"); b1->setPos(0, 0); QNEBlock *b2 = new QNEBlock(0); scene->addItem(b2); b2->block_name="U2"; b2->block_type="Threshold"; b2->addInputPort("img"); b2->addOutputPort("thr"); b2->setPos(150, 0); }