У меня есть некоторые переменные, которые я хочу изменить через графический интерфейс. Переменные бывают четырех типов: bool, long long, double, char *. Требуются разные виджеты для разных типов:
- QCheckBox для
bool
- QSpinBox для
long long
- QDoubleSpinBox для
double
- QLineEdit для
char*
Или поменять char* на std::string - не важно.
Итак, мне нужен виджет, который может рисовать N строк для N параметров различных типов. Каждая переменная может иметь свое имя для отображения в графическом интерфейсе.
Я реализовал свой виджет, но ищу "стандартное решение" этой задачи. Мой собственный импл: http://savepic.net/1742263.png
Хотите что-то вроде форм свойств Qt Designer.
Ответ 1 · рейтинг 1 · Subaru Tashiro
создайте свой собственный подкласс QWidget, чтобы создать свой собственный "виджет свойств", который будет иметь QLabel и соответствующий виджет для типа переменной. затем добавьте свой собственный "виджет свойств" в свое приложение.
например, если вам нужно добавить строку для типа bool, ее класс будет выглядеть примерно так:
class BoolPropertyWidget : public QWidget
{
QHBoxLayout layout;
QLabel label;
public:
QCheckBox value; //if you would like to access the actual bool value, you can just use value.isChecked()
BoolPropertyWidget() {
//...do necessary adjustments layout, label and value here
layout.addWidget(&label);
layout.addWidget(&value);
setLayout(&layout);
}
};
затем, если вам нужно добавить виджет свойств в свое приложение, вам просто нужно создать экземпляр BoolPropertyWidget и использовать функцию-член addWidget() объекта макета в вашем приложении.
это позволит вам создать приложение с любым количеством необходимых "виджетов свойств", какими бы они ни были.
если когда-либо ваше приложение не изменяет размер должным образом после добавления вашего пользовательского "виджета свойств", попробуйте вызвать AdjustSize() в вашем приложении.