Add one [label | field | trailing] row to a 3-column scene-control grid. Using a real grid column (not an in-cell spacer) keeps every field's right edge and the trailing eye/add button aligned across rows by construction. `trailing` may be null (column 2 stays reserved via setColumnMinimumWidth).
| 82 | // edge and the trailing eye/add button aligned across rows by construction. |
| 83 | // `trailing` may be null (column 2 stays reserved via setColumnMinimumWidth). |
| 84 | void addGridRow(QGridLayout* grid, int& row, const QString& label, QWidget* field, QWidget* trailing = nullptr) { |
| 85 | grid->addWidget(new QLabel(label + QStringLiteral(":")), row, 0); |
| 86 | grid->addWidget(field, row, 1); |
| 87 | if (trailing != nullptr) { |
| 88 | grid->addWidget(trailing, row, 2); |
| 89 | } |
| 90 | ++row; |
| 91 | } |
| 92 | |
| 93 | // App-wide clipboard for layer parameters: Copy stores the source layer's |
| 94 | // serialized params plus its family; Paste applies them to a same-family layer. |