Я использую инфраструктуру Qt для создания пользовательского интерфейса для моей бизнес-логики.Класс, отвечающий за создание пользовательского интерфейса, предоставляет несколько методов, которые шаг за шагом инициализируют элементы пользовательского интерфейса, размещают их, группируют и, наконец, форматируют (т.е. void MyUi::init3_formatUiElements()
) их.
Естественно, некоторые элементы пользовательского интерфейсатребуется множество настроек макета, поэтому этот метод может выглядеть так:
void MyUi::init3_formatUiElements() {
_spinBox_distance->setMinimum(0.0);
_spinBox_distance->setMaximum(10.0);
_spinBox_distance->setSingleStep(0.5);
_spinBox_distance->setSuffix(" meters");
//...
//same for other widgets
return;
}
Объекты типа QDoubleSpinBox* _spinBox_distance
являются полями-членами класса MyUi
.
Я хотел бы иметь "временный"псевдоним "для _spinBox_distance
, в том смысле, что тело вышеупомянутого метода упрощается до
void MyUi::init3_formatUiElements() {
//create alias x for _spinBox_distance here
x->setMinimum(0.0);
x->setMaximum(10.0);
x->setSingleStep(0.5);
x->setSuffix(" meters");
//...
//free alias x here
//same for other widgets: create alias x for next widget
//...
//free alias x here
return;
}
Это ускорит процесс ввода текста и сделает фрагменты кода более копируемыми / вставляемыми, особенно для элементов пользовательского интерфейса подобногоtype.
Помимо определения объема каждого блока в фигурных скобках
{ QDoubleSpinBox*& x = _spinBox_distance;
x->setMinimum(0.0);
//...
}
{ QLabel*& x = _label_someOtherWidget;
//...
}
существует ли элегантный способ добиться этого?
Я пробовал приведенный выше синтаксис без определения объема, но с разрушениемx
тогда, конечно, приводит к разрушению базового виджета.
Может быть
QDoubleSpinBox** x = new QDoubleSpinBox*;
x = &_spinBox_distance;
(*x)->setMinimum(0.0);
//...
delete x;
, но это не делает вещи намного проще для ввода текста (три дополнительные строки, указателик указателям, (*x)
) ...: D
РЕДАКТИРОВАТЬ: Этот не работает, как после delete x
, не может быть повторно объявлен другого типа.