void MainWindow::on_colorButton_clicked(bool checked) { QColorDialog *colorDialog = new QColorDialog(); colorDialog->open(this, SLOT(cambiarColor(QColor))); }
virtual void accept() { KColorDialog::accept(); original->setCurrentColor(color()); QMetaObject::invokeMethod(original, "accept"); //workaround protected }
QWidget *Data3DTreeDelegate::createEditor(QWidget* parent, const QStyleOptionViewItem& option , const QModelIndex& index) const { // Only create the editors here. Do not set any data from the model yet. This is done in setEditorData(). //Connect to Data3DTreeDelegate::onEditorEdited if you want to have immediate feedback (default by QItemDelegate is on EditorFinished). const Data3DTreeModel* pData3DTreeModel = static_cast<const Data3DTreeModel*>(index.model()); const AbstractTreeItem* pAbstractItem = static_cast<const AbstractTreeItem*>(pData3DTreeModel->itemFromIndex(index)); switch(pAbstractItem->type()) { case MetaTreeItemTypes::SurfaceColorGyri: { QColorDialog *pColorDialog = new QColorDialog(parent); connect(pColorDialog, &QColorDialog::currentColorChanged, this, &Data3DTreeDelegate::onEditorEdited); pColorDialog->setWindowTitle("Select Gyri Color"); pColorDialog->show(); return pColorDialog; } case MetaTreeItemTypes::SurfaceColorSulci: { QColorDialog *pColorDialog = new QColorDialog(); connect(pColorDialog, &QColorDialog::currentColorChanged, this, &Data3DTreeDelegate::onEditorEdited); pColorDialog->setWindowTitle("Select Sulci Color"); pColorDialog->show(); return pColorDialog; } case MetaTreeItemTypes::ColormapType: { QComboBox* pComboBox = new QComboBox(parent); connect(pComboBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &Data3DTreeDelegate::onEditorEdited); pComboBox->addItem("Hot Negative 1"); pComboBox->addItem("Hot Negative 2"); pComboBox->addItem("Hot"); pComboBox->addItem("Jet"); return pComboBox; } case MetaTreeItemTypes::DataThreshold: { Spline* pSpline = new Spline("Set Threshold", 0); connect(pSpline, static_cast<void (Spline::*)(double, double, double)>(&Spline::borderChanged), this, &Data3DTreeDelegate::onEditorEdited); return pSpline; } case MetaTreeItemTypes::StreamingTimeInterval: { QSpinBox* pSpinBox = new QSpinBox(parent); connect(pSpinBox, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, &Data3DTreeDelegate::onEditorEdited); pSpinBox->setSuffix(" mSec"); pSpinBox->setMinimum(1); pSpinBox->setMaximum(50000); pSpinBox->setSingleStep(1); return pSpinBox; } case MetaTreeItemTypes::VisualizationType: { QComboBox* pComboBox = new QComboBox(parent); pComboBox->addItem("Interpolation based"); pComboBox->addItem("Annotation based"); return pComboBox; } case MetaTreeItemTypes::Color: { QColorDialog *pColorDialog = new QColorDialog(); connect(pColorDialog, &QColorDialog::currentColorChanged, this, &Data3DTreeDelegate::onEditorEdited); pColorDialog->setWindowTitle("Select Color"); pColorDialog->show(); return pColorDialog; } case MetaTreeItemTypes::NumberAverages: { QSpinBox* pSpinBox = new QSpinBox(parent); connect(pSpinBox, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), this, &Data3DTreeDelegate::onEditorEdited); pSpinBox->setMinimum(1); pSpinBox->setMaximum(100); pSpinBox->setSingleStep(1); return pSpinBox; } case MetaTreeItemTypes::AlphaValue: { QDoubleSpinBox* pDoubleSpinBox = new QDoubleSpinBox(parent); connect(pDoubleSpinBox, static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged), this, &Data3DTreeDelegate::onEditorEdited); pDoubleSpinBox->setMinimum(0.01); pDoubleSpinBox->setMaximum(1.0); pDoubleSpinBox->setSingleStep(0.01); return pDoubleSpinBox; } case MetaTreeItemTypes::SurfaceTessInner: { QDoubleSpinBox* pDoubleSpinBox = new QDoubleSpinBox(parent); connect(pDoubleSpinBox, static_cast<void (QDoubleSpinBox::*)()>(&QDoubleSpinBox::editingFinished), this, &Data3DTreeDelegate::onEditorEdited); pDoubleSpinBox->setMinimum(1.0); pDoubleSpinBox->setMaximum(100.0); pDoubleSpinBox->setSingleStep(1.0); return pDoubleSpinBox; } case MetaTreeItemTypes::SurfaceTessOuter: { QDoubleSpinBox* pDoubleSpinBox = new QDoubleSpinBox(parent); connect(pDoubleSpinBox, static_cast<void (QDoubleSpinBox::*)()>(&QDoubleSpinBox::editingFinished), this, &Data3DTreeDelegate::onEditorEdited); pDoubleSpinBox->setMinimum(1.0); pDoubleSpinBox->setMaximum(100.0); pDoubleSpinBox->setSingleStep(1.0); return pDoubleSpinBox; } case MetaTreeItemTypes::SurfaceTriangleScale: { QDoubleSpinBox* pDoubleSpinBox = new QDoubleSpinBox(parent); connect(pDoubleSpinBox, static_cast<void (QDoubleSpinBox::*)()>(&QDoubleSpinBox::editingFinished), this, &Data3DTreeDelegate::onEditorEdited); pDoubleSpinBox->setMinimum(0.01); pDoubleSpinBox->setMaximum(100.0); pDoubleSpinBox->setSingleStep(0.01); return pDoubleSpinBox; } case MetaTreeItemTypes::TranslateX: { QDoubleSpinBox* pDoubleSpinBox = new QDoubleSpinBox(parent); connect(pDoubleSpinBox, static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged), this, &Data3DTreeDelegate::onEditorEdited); pDoubleSpinBox->setMinimum(-10000.0); pDoubleSpinBox->setMaximum(10000.0); pDoubleSpinBox->setSingleStep(0.001); pDoubleSpinBox->setDecimals(5); return pDoubleSpinBox; } case MetaTreeItemTypes::TranslateY: { QDoubleSpinBox* pDoubleSpinBox = new QDoubleSpinBox(parent); connect(pDoubleSpinBox, static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged), this, &Data3DTreeDelegate::onEditorEdited); pDoubleSpinBox->setMinimum(-10000.0); pDoubleSpinBox->setMaximum(10000.0); pDoubleSpinBox->setSingleStep(0.001); pDoubleSpinBox->setDecimals(5); return pDoubleSpinBox; } case MetaTreeItemTypes::TranslateZ: { QDoubleSpinBox* pDoubleSpinBox = new QDoubleSpinBox(parent); connect(pDoubleSpinBox, static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged), this, &Data3DTreeDelegate::onEditorEdited); pDoubleSpinBox->setMinimum(-10000.0); pDoubleSpinBox->setMaximum(10000.0); pDoubleSpinBox->setSingleStep(0.001); pDoubleSpinBox->setDecimals(5); return pDoubleSpinBox; } case MetaTreeItemTypes::Scale: { QDoubleSpinBox* pDoubleSpinBox = new QDoubleSpinBox(parent); connect(pDoubleSpinBox, static_cast<void (QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged), this, &Data3DTreeDelegate::onEditorEdited); pDoubleSpinBox->setMinimum(-10000.0); pDoubleSpinBox->setMaximum(10000.0); pDoubleSpinBox->setSingleStep(0.01); pDoubleSpinBox->setDecimals(3); return pDoubleSpinBox; } case MetaTreeItemTypes::NetworkMatrix: { QStandardItem* pParentItem = static_cast<QStandardItem*>(pAbstractItem->QStandardItem::parent()); QModelIndex indexParent = pData3DTreeModel->indexFromItem(pParentItem); MatrixXd matRTData = index.model()->data(indexParent, Data3DTreeModelItemRoles::Data).value<MatrixXd>(); ImageSc* pPlotLA = new ImageSc(matRTData); pPlotLA->show(); //return pPlotLA; } case MetaTreeItemTypes::MaterialType: { QComboBox* pComboBox = new QComboBox(parent); pComboBox->addItem("Phong Alpha Tesselation"); pComboBox->addItem("Phong Alpha"); pComboBox->addItem("Show normals"); pComboBox->addItem("GPU Interpolation"); return pComboBox; } case MetaTreeItemTypes::CancelDistance: { QDoubleSpinBox* pDoubleSpinBox = new QDoubleSpinBox(parent); pDoubleSpinBox->setMinimum(0.001); pDoubleSpinBox->setMaximum(1.0); pDoubleSpinBox->setSingleStep(0.01); pDoubleSpinBox->setSuffix("m"); return pDoubleSpinBox; } case MetaTreeItemTypes::InterpolationFunction: { QComboBox* pComboBox = new QComboBox(parent); connect(pComboBox, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), this, &Data3DTreeDelegate::onEditorEdited); pComboBox->addItem("Linear"); pComboBox->addItem("Square"); pComboBox->addItem("Cubic"); pComboBox->addItem("Gaussian"); return pComboBox; } default: { break; } } return QItemDelegate::createEditor(parent, option, index); }
void Data3DTreeDelegate::setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const { const Data3DTreeModel* pData3DTreeModel = static_cast<const Data3DTreeModel*>(index.model()); const AbstractTreeItem* pAbstractItem = static_cast<const AbstractTreeItem*>(pData3DTreeModel->itemFromIndex(index)); //Set data manually here so we can use our own item roles. switch(pAbstractItem->type()) { case MetaTreeItemTypes::SurfaceColorGyri: { QColorDialog* pColorDialog = static_cast<QColorDialog*>(editor); QColor color = pColorDialog->currentColor(); QVariant data; data.setValue(color); model->setData(index, data, MetaTreeItemRoles::SurfaceColorGyri); model->setData(index, data, Qt::DecorationRole); break; } case MetaTreeItemTypes::SurfaceColorSulci: { QColorDialog* pColorDialog = static_cast<QColorDialog*>(editor); QColor color = pColorDialog->currentColor(); QVariant data; data.setValue(color); model->setData(index, data, MetaTreeItemRoles::SurfaceColorSulci); model->setData(index, data, Qt::DecorationRole); break; } case MetaTreeItemTypes::ColormapType: { QComboBox* pColorMapType = static_cast<QComboBox*>(editor); QVariant data; data.setValue(pColorMapType->currentText()); model->setData(index, data, MetaTreeItemRoles::ColormapType); model->setData(index, data, Qt::DisplayRole); break; } case MetaTreeItemTypes::DataThreshold: { if(Spline* pSpline = dynamic_cast<Spline*>(editor)) { QVector3D returnVector; returnVector = pSpline->getThreshold(); QString displayThreshold; displayThreshold = QString("%1,%2,%3").arg(returnVector.x()).arg(returnVector.y()).arg(returnVector.z()); QVariant data; data.setValue(displayThreshold); model->setData(index, data, Qt::DisplayRole); data.setValue(returnVector); model->setData(index, data, MetaTreeItemRoles::DataThreshold); } break; } case MetaTreeItemTypes::StreamingTimeInterval: { QSpinBox* pSpinBox = static_cast<QSpinBox*>(editor); QVariant data; data.setValue(pSpinBox->value()); model->setData(index, data, MetaTreeItemRoles::StreamingTimeInterval); model->setData(index, data, Qt::DisplayRole); break; } case MetaTreeItemTypes::VisualizationType: { QComboBox* pVisType = static_cast<QComboBox*>(editor); QVariant data; data.setValue(pVisType->currentText()); model->setData(index, data, MetaTreeItemRoles::VisualizationType); model->setData(index, data, Qt::DisplayRole); break; } case MetaTreeItemTypes::Color: { QColorDialog* pColorDialog = static_cast<QColorDialog*>(editor); QColor color = pColorDialog->currentColor(); QVariant data; data.setValue(color); model->setData(index, data, MetaTreeItemRoles::Color); model->setData(index, data, Qt::DecorationRole); break; } case MetaTreeItemTypes::NumberAverages: { QSpinBox* pSpinBox = static_cast<QSpinBox*>(editor); QVariant data; data.setValue(pSpinBox->value()); model->setData(index, data, MetaTreeItemRoles::NumberAverages); model->setData(index, data, Qt::DisplayRole); break; } case MetaTreeItemTypes::AlphaValue: { QDoubleSpinBox* pDoubleSpinBox = static_cast<QDoubleSpinBox*>(editor); QVariant data; data.setValue(pDoubleSpinBox->value()); model->setData(index, data, MetaTreeItemRoles::AlphaValue); model->setData(index, data, Qt::DisplayRole); break; } case MetaTreeItemTypes::SurfaceTessInner: { QDoubleSpinBox* pDoubleSpinBox = static_cast<QDoubleSpinBox*>(editor); QVariant data; data.setValue(pDoubleSpinBox->value()); model->setData(index, data, MetaTreeItemRoles::SurfaceTessInner); model->setData(index, data, Qt::DisplayRole); break; } case MetaTreeItemTypes::SurfaceTessOuter: { QDoubleSpinBox* pDoubleSpinBox = static_cast<QDoubleSpinBox*>(editor); QVariant data; data.setValue(pDoubleSpinBox->value()); model->setData(index, data, MetaTreeItemRoles::SurfaceTessOuter); model->setData(index, data, Qt::DisplayRole); break; } case MetaTreeItemTypes::SurfaceTriangleScale: { QDoubleSpinBox* pDoubleSpinBox = static_cast<QDoubleSpinBox*>(editor); QVariant data; data.setValue(pDoubleSpinBox->value()); model->setData(index, data, MetaTreeItemRoles::SurfaceTriangleScale); model->setData(index, data, Qt::DisplayRole); break; } case MetaTreeItemTypes::TranslateX: { QDoubleSpinBox* pDoubleSpinBox = static_cast<QDoubleSpinBox*>(editor); QVariant data; data.setValue(pDoubleSpinBox->value()); model->setData(index, data, MetaTreeItemRoles::TranslateX); model->setData(index, data, Qt::DisplayRole); break; } case MetaTreeItemTypes::TranslateY: { QDoubleSpinBox* pDoubleSpinBox = static_cast<QDoubleSpinBox*>(editor); QVariant data; data.setValue(pDoubleSpinBox->value()); model->setData(index, data, MetaTreeItemRoles::TranslateY); model->setData(index, data, Qt::DisplayRole); break; } case MetaTreeItemTypes::TranslateZ: { QDoubleSpinBox* pDoubleSpinBox = static_cast<QDoubleSpinBox*>(editor); QVariant data; data.setValue(pDoubleSpinBox->value()); model->setData(index, data, MetaTreeItemRoles::TranslateZ); model->setData(index, data, Qt::DisplayRole); break; } case MetaTreeItemTypes::Scale: { QDoubleSpinBox* pDoubleSpinBox = static_cast<QDoubleSpinBox*>(editor); QVariant data; data.setValue(pDoubleSpinBox->value()); model->setData(index, data, MetaTreeItemRoles::Scale); model->setData(index, data, Qt::DisplayRole); break; } case MetaTreeItemTypes::MaterialType: { QComboBox* pComboBox = static_cast<QComboBox*>(editor); QVariant data; data.setValue(pComboBox->currentText()); model->setData(index, data, MetaTreeItemRoles::SurfaceMaterial); model->setData(index, data, Qt::DisplayRole); break; } case MetaTreeItemTypes::CancelDistance: { QDoubleSpinBox* pDoubleSpinBox = static_cast<QDoubleSpinBox*>(editor); QVariant data; data.setValue(pDoubleSpinBox->value()); model->setData(index, data, MetaTreeItemRoles::CancelDistance); model->setData(index, data, Qt::DisplayRole); break; } case MetaTreeItemTypes::InterpolationFunction: { QComboBox* pColorMapType = static_cast<QComboBox*>(editor); QVariant data; data.setValue(pColorMapType->currentText()); model->setData(index, data, MetaTreeItemRoles::InterpolationFunction); model->setData(index, data, Qt::DisplayRole); break; } // Handle all other item types via QItemDelegate::setModelData handling default: { QItemDelegate::setModelData(editor, model, index); break; } } }
void Data3DTreeDelegate::setEditorData(QWidget* editor, const QModelIndex& index) const { const Data3DTreeModel* pData3DTreeModel = static_cast<const Data3DTreeModel*>(index.model()); const AbstractTreeItem* pAbstractItem = static_cast<const AbstractTreeItem*>(pData3DTreeModel->itemFromIndex(index)); // Only catch non-standard Qt types such as QColorDialog or items which need special handling for display role (e.g. Thresholding) etc. switch(pAbstractItem->type()) { case MetaTreeItemTypes::SurfaceColorGyri: { QColor color = index.model()->data(index, MetaTreeItemRoles::SurfaceColorGyri).value<QColor>(); QColorDialog* pColorDialog = static_cast<QColorDialog*>(editor); pColorDialog->setCurrentColor(color); break; } case MetaTreeItemTypes::SurfaceColorSulci: { QColor color = index.model()->data(index, MetaTreeItemRoles::SurfaceColorSulci).value<QColor>(); QColorDialog* pColorDialog = static_cast<QColorDialog*>(editor); pColorDialog->setCurrentColor(color); break; } case MetaTreeItemTypes::Color: { QColor color = index.model()->data(index, MetaTreeItemRoles::Color).value<QColor>(); QColorDialog* pColorDialog = static_cast<QColorDialog*>(editor); pColorDialog->setCurrentColor(color); break; } case MetaTreeItemTypes::DataThreshold: { if(Spline* pSpline = static_cast<Spline*>(editor)) { //Find the parent and retreive real-time data to calcualte the histogram if(AbstractTreeItem* pParentItem = static_cast<AbstractTreeItem*>(pAbstractItem->QStandardItem::parent())) { QModelIndex indexParent = pData3DTreeModel->indexFromItem(pParentItem); //Get data MatrixXd matRTData; QVariant data; data = index.model()->data(indexParent, Data3DTreeModelItemRoles::Data); if(data.canConvert<MatrixXd>()) { matRTData = data.value<MatrixXd>(); matRTData = matRTData.cwiseAbs(); //Calcualte histogram Eigen::VectorXd resultClassLimit; Eigen::VectorXi resultFrequency; MNEMath::histcounts(matRTData, false, 50, resultClassLimit, resultFrequency, 0.0, 0.0); //Create histogram plot pSpline->setData(resultClassLimit, resultFrequency); QVector3D vecThresholdValues = index.model()->data(index, MetaTreeItemRoles::DataThreshold).value<QVector3D>(); pSpline->setThreshold(vecThresholdValues); QList<QStandardItem*> pColormapItem = pParentItem->findChildren(MetaTreeItemTypes::ColormapType); for(int i = 0; i < pColormapItem.size(); ++i) { if(pColormapItem.at(i)) { QModelIndex indexColormapItem = pData3DTreeModel->indexFromItem(pColormapItem.at(i)); QString colorMap = index.model()->data(indexColormapItem, MetaTreeItemRoles::ColormapType).value<QString>(); pSpline->setColorMap(colorMap); } } } } pSpline->resize(600,400); } break; } // Handle basic types (QString, int, double, etc.) by default via QItemDelegate::setEditorData default: { QItemDelegate::setEditorData(editor, index); } } }
void BrainTreeDelegate::setModelData(QWidget* editor, QAbstractItemModel* model, const QModelIndex& index) const { const BrainTreeModel* pBrainTreeModel = static_cast<const BrainTreeModel*>(index.model()); const AbstractTreeItem* pAbstractItem = static_cast<const AbstractTreeItem*>(pBrainTreeModel->itemFromIndex(index)); switch(pAbstractItem->type()) { case BrainTreeModelItemTypes::SurfaceColorGyri: { QColorDialog* pColorDialog = static_cast<QColorDialog*>(editor); QColor color = pColorDialog->currentColor(); QVariant data; data.setValue(color); model->setData(index, data, BrainTreeItemRoles::SurfaceColorGyri); model->setData(index, data, Qt::DecorationRole); return; } case BrainTreeModelItemTypes::SurfaceColorSulci: { QColorDialog* pColorDialog = static_cast<QColorDialog*>(editor); QColor color = pColorDialog->currentColor(); QVariant data; data.setValue(color); model->setData(index, data, BrainTreeItemRoles::SurfaceColorSulci); model->setData(index, data, Qt::DecorationRole); return; } case BrainTreeModelItemTypes::SurfaceColorInfoOrigin: { QComboBox* pColorDialog = static_cast<QComboBox*>(editor); QVariant data; data.setValue(pColorDialog->currentText()); model->setData(index, data, BrainTreeItemRoles::SurfaceColorInfoOrigin); model->setData(index, data, Qt::DisplayRole); return; } case BrainTreeModelItemTypes::RTDataColormapType: { QComboBox* pColorDialog = static_cast<QComboBox*>(editor); QVariant data; data.setValue(pColorDialog->currentText()); model->setData(index, data, BrainTreeItemRoles::RTDataColormapType); model->setData(index, data, Qt::DisplayRole); return; } case BrainTreeModelItemTypes::RTDataNormalizationValue: { QDoubleSpinBox* pDoubleSpinBox = static_cast<QDoubleSpinBox*>(editor); QVariant data; data.setValue(pDoubleSpinBox->value()); model->setData(index, data, BrainTreeItemRoles::RTDataNormalizationValue); model->setData(index, data, Qt::DisplayRole); break; } case BrainTreeModelItemTypes::RTDataTimeInterval: { QSpinBox* pSpinBox = static_cast<QSpinBox*>(editor); QVariant data; data.setValue(pSpinBox->value()); model->setData(index, data, BrainTreeItemRoles::RTDataTimeInterval); model->setData(index, data, Qt::DisplayRole); break; } } QItemDelegate::setModelData(editor, model, index); }
void ShowPicture::onBtnColorSettingClicked() { QColorDialog* colorDlg = new QColorDialog; colorDlg->exec(); QColor selectColor = colorDlg->selectedColor(); }