Mam stworzyć wiele okien do edycji struktur , w przykładzie struktura ma 4 pola , normalnie 20-30.
To naukowcy generują takie struktury :D
Naukowcy trochę znają c++ ale zupełnie nie kumają Qt, wiec pomyślałem że trochę ułatwię życie i zrobię mechanizm który
ułatwi tworzenie GUI za pomocą prostych konstrukcji
struct StructT1
{
std::string name; // "koza/krowa/owca"
int data1; // "0-1; default 0"
int16 data2; //"0-319; default 0"
int8 data3; //"0-3; 3-internal mode"
}
Opisuje rekordy do edycji jako lista struktur
class Edit_StructT1 : public Edit_struct::Edit_struct_base
{
public:
virtual void init_rows() override
{
Edit_StructT1 &editObject = ..... ;
rows.emplace_back(RowEdit{"Jakis opis",row_separator});
rows.emplace_back(RowEdit{"name",row_string, &editObject.name, "koza/krowa/owca"});
rows.emplace_back(RowEdit{"data1",row_int, &editObject.data1, "0-1; default 0"});
rows.emplace_back(RowEdit{"data2",row_int16, &editObject.data2, "0-319; default 0"});
rows.emplace_back(RowEdit{"data3",row_int8, &editObject.data3, "0-3; 3-internal mode"});
};
};
namespace Edit_struct
{
class Edit_struct_base : public QWidget
{
Q_OBJECT
public:
enum RowEditType {row_separator, row_int, row_int16, row_int8};
struct RowEdit
{
std::string name;
RowEditType type;
void * ptr{nullptr};
std::string desc{""};
bool readOnly{false};
// konstruktor domyslny
RowEdit (std::string name_, RowEditType type_ , void * ptr_ = nullptr , std::string desc_ = "", bool readOnly_=false)
{
name = name_;
type = type_;
ptr = ptr_;
desc = desc_;
readOnly = readOnly_;
}
// RowEdit (std::string name_, RowEditType type_)
// {
// name = name_;
// type = type_;
// }
};
W komentarzach struktury są opisane warunki
np. int data1; // "0-1; default 0"
jak dodać w mojej strukturze "RowEdit" walidacje danych ? Lambda to dobry trop ?