#include "StructView.h" #include #include #include #include #include #include #include BinaryStructView::BinaryStructView(QWidget* p /*= nullptr*/) :QWidget(p), _name_enter(new QLineEdit(this)), _base_type(new QComboBox(this)), _ends_set(new QComboBox(this)), _bin_layout(new QTableView(this)), _bin_model(new QStandardItemModel(this)), _struct_layout(new QTreeView(this)), _struct_model(new QStandardItemModel(this)), _translate_layout(new QTreeView(this)), _translate_model(new QStandardItemModel(this)) { auto layout = new QGridLayout(this); //layout->setSpacing(10); layout->addWidget(new QLabel(tr("Unit Name:"), this)); layout->addWidget(_name_enter, 0, 1); layout->addWidget(new QLabel(tr("Base On:"), this), 0, 2); layout->addWidget(_base_type, 0, 3); layout->addWidget(new QLabel(tr("Basedata Endian Appoint:"), this), 0, 4); layout->addWidget(_ends_set, 0, 5); auto btn = new QPushButton(tr("Save"), this); layout->addWidget(btn, 0, 6); auto h_splitter = new QSplitter(Qt::Horizontal, this); layout->addWidget(h_splitter, 1, 0, 3, 7); auto splitter = new QSplitter(Qt::Vertical, this); h_splitter->addWidget(splitter); auto translation_panel = new QGroupBox(tr("Translation Detail"), this); auto translation_layout = new QGridLayout(translation_panel); translation_layout->addWidget(this->_translate_layout); h_splitter->addWidget(translation_panel); auto bin_panel = new QGroupBox(tr("Sequence Define")); auto bin_layout = new QGridLayout(bin_panel); bin_layout->addWidget(_bin_layout); splitter->addWidget(bin_panel); auto struct_panel = new QGroupBox(tr("Structual Preview"), this); auto struct_layout = new QGridLayout(struct_panel); struct_layout->addWidget(_struct_layout); splitter->addWidget(struct_panel); // ======================= _base_type->addItems(QStringList()<addItems(QStringList() << tr("little-endian") << tr("big-endian")); _bin_layout->setModel(_bin_model); _struct_layout->setModel(_struct_model); _translate_layout->setModel(this->_translate_model); _bin_model->setHorizontalHeaderLabels(QStringList() << tr("Member Name") << tr("Logical Type") << tr("Base Type") << tr("Bytes Offset") << tr("Bytes Count")); _bin_model->appendRow(QList() << new QStandardItem(u8"单元标志")<< new QStandardItem(u8"数据") << new QStandardItem(u8"UINT8") << new QStandardItem("0") << new QStandardItem("1*1")); _bin_model->appendRow(QList() << new QStandardItem(u8"集合尺寸") << new QStandardItem(u8"数据") << new QStandardItem(u8"UINT16") << new QStandardItem("0") << new QStandardItem(u8"2*1")); _bin_model->appendRow(QList() << new QStandardItem(u8"变长数据") << new QStandardItem(u8"集合") << new QStandardItem(u8"UINT8") << new QStandardItem("0") << new QStandardItem(u8"1*集合尺寸")); _bin_model->appendRow(QList() << new QStandardItem(u8"联合数据") << new QStandardItem(u8"联合") << new QStandardItem(u8"X联合") << new QStandardItem("0") << new QStandardItem(u8"8*1")); _struct_model->setHorizontalHeaderLabels(QStringList() << tr("Fields") << tr("Comment")); _translate_model->setHorizontalHeaderLabels(QStringList() << tr("Apply Condition") << tr("Translate Type") << tr("RuleBase") << tr("Result With")); _translate_model->appendRow(QList< QStandardItem*>() << new QStandardItem(u8"绑定") << new QStandardItem(u8"直译") << new QStandardItem(u8"数值转换") << new QStandardItem(u8"To=16进制")); _translate_model->appendRow(QList< QStandardItem*>() << new QStandardItem(u8"绑定") << new QStandardItem(u8"直译") << new QStandardItem(u8"数值转换") << new QStandardItem(u8"To=float,LSB=0.1")); }