/////////////////////////////////////////////////////////////////////////////////////////
| 70 | |
| 71 | ////////////////////////////////////////////////////////////////////////////////////////////// |
| 72 | int |
| 73 | pcl::modeler::ParameterDialog::exec() |
| 74 | { |
| 75 | pcl::modeler::ParameterModel parameterModel(int(name_parameter_map_.size()), 2, this); |
| 76 | parameter_model_ = ¶meterModel; |
| 77 | |
| 78 | QStringList headerLabels; |
| 79 | headerLabels.push_back("Variable Name"); |
| 80 | headerLabels.push_back("Variable Value"); |
| 81 | parameterModel.setHorizontalHeaderLabels(headerLabels); |
| 82 | |
| 83 | QTableView tableView(this); |
| 84 | tableView.setModel(¶meterModel); |
| 85 | |
| 86 | std::size_t currentRow = 0; |
| 87 | for (const auto& name_parameter : name_parameter_map_) { |
| 88 | QModelIndex name = parameterModel.index(int(currentRow), 0, QModelIndex()); |
| 89 | parameterModel.setData(name, QVariant(name_parameter.first.c_str())); |
| 90 | |
| 91 | QModelIndex value = parameterModel.index(int(currentRow), 1, QModelIndex()); |
| 92 | std::pair<QVariant, int> model_data = name_parameter.second->toModelData(); |
| 93 | parameterModel.setData(value, model_data.first, model_data.second); |
| 94 | |
| 95 | currentRow++; |
| 96 | } |
| 97 | |
| 98 | ParameterDelegate parameterDelegate(name_parameter_map_); |
| 99 | tableView.setItemDelegate(¶meterDelegate); |
| 100 | |
| 101 | tableView.horizontalHeader()->setStretchLastSection(true); |
| 102 | tableView.horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents); |
| 103 | tableView.setShowGrid(true); |
| 104 | tableView.verticalHeader()->hide(); |
| 105 | tableView.setSelectionBehavior(QAbstractItemView::SelectRows); |
| 106 | tableView.resizeColumnsToContents(); |
| 107 | |
| 108 | int totlen = |
| 109 | tableView.columnWidth(0) + tableView.columnWidth(1) + frameSize().width(); |
| 110 | setMinimumWidth(totlen); |
| 111 | |
| 112 | QPushButton* pushButtonReset = new QPushButton("Reset", this); |
| 113 | QPushButton* pushButtonApply = new QPushButton("Apply", this); |
| 114 | QPushButton* pushButtonCancel = new QPushButton("Cancel", this); |
| 115 | |
| 116 | connect(pushButtonReset, SIGNAL(clicked()), this, SLOT(reset())); |
| 117 | connect(pushButtonApply, SIGNAL(clicked()), this, SLOT(accept())); |
| 118 | connect(pushButtonCancel, SIGNAL(clicked()), this, SLOT(reject())); |
| 119 | |
| 120 | QGridLayout gridLayout(this); |
| 121 | gridLayout.addWidget(&tableView, 0, 0, 1, 3); |
| 122 | gridLayout.addWidget(pushButtonReset, 1, 0); |
| 123 | gridLayout.addWidget(pushButtonApply, 1, 1); |
| 124 | gridLayout.addWidget(pushButtonCancel, 1, 2); |
| 125 | setLayout(&gridLayout); |
| 126 | |
| 127 | int result = QDialog::exec(); |
| 128 | |
| 129 | return result; |