Skip to content

Commit 6e17ade

Browse files
add: table formatting for gear parameter output
1 parent a550f9e commit 6e17ade

1 file changed

Lines changed: 73 additions & 49 deletions

File tree

src/ui/ParamInput.cpp

Lines changed: 73 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@
44
#include <QDialog>
55
#include <QDoubleValidator>
66
#include <QFormLayout>
7+
#include <QHeaderView>
78
#include <QLineEdit>
89
#include <QPushButton>
910
#include <QSpinBox>
11+
#include <QTableWidget>
1012
#include <QTextEdit>
1113
#include <QVBoxLayout>
1214
#include <QWidget>
@@ -89,65 +91,87 @@ QWidget* createGearParamForm(QWidget* parent = nullptr) {
8991
// Result dialog
9092
QDialog* resultDialog = new QDialog(formWidget);
9193
resultDialog->setWindowTitle("Calculated Gear Parameters");
94+
resultDialog->resize(600,800);
9295
QVBoxLayout* dlgLayout = new QVBoxLayout(resultDialog);
9396

94-
QTextEdit* output = new QTextEdit(resultDialog);
95-
output->setReadOnly(true);
96-
97-
QString summary;
98-
summary += "=== Gear Parameters ===\n";
99-
summary += QString("numTeeth: %1\n").arg(gear.numTeeth);
100-
summary += QString("pitchConeAngle: %1\n").arg(gear.pitchConeAngle);
101-
summary += QString("faceConeAngle: %1\n").arg(gear.faceConeAngle);
102-
summary += QString("rootConeAngle: %1\n").arg(gear.rootConeAngle);
103-
summary += QString("module: %1\n").arg(gear.module);
104-
summary += QString("faceConeOffset: %1\n").arg(gear.faceConeOffset);
105-
summary += QString("rootConeOffset: %1\n").arg(gear.rootConeOffset);
106-
summary += QString("innerConeDistance: %1\n").arg(gear.innerConeDistance);
107-
summary += QString("outerConeDistance: %1\n").arg(gear.outerConeDistance);
108-
summary += QString("pitchConeDistance: %1\n").arg(gear.pitchConeDistance);
109-
summary += QString("addendum: %1\n").arg(gear.addendum);
110-
summary += QString("dedendum: %1\n").arg(gear.dedendum);
111-
summary += QString("backlash: %1\n").arg(gear.backlash);
112-
summary += QString("shaftAngle: %1\n").arg(gear.shaftAngle);
113-
summary += QString("pressureAngle: %1\n").arg(gear.pressureAngle);
114-
summary += QString("spiralAngle: %1\n").arg(gear.spiralAngle);
115-
summary += QString("spiralType: %1\n")
116-
.arg(spiralFunctionUtils::toString(gear.spiralType));
117-
118-
summary += "\n=== Pinion Parameters ===\n";
119-
summary += QString("numTeeth: %1\n").arg(pinion.numTeeth);
120-
summary += QString("pitchConeAngle: %1\n").arg(pinion.pitchConeAngle);
121-
summary += QString("faceConeAngle: %1\n").arg(pinion.faceConeAngle);
122-
summary += QString("rootConeAngle: %1\n").arg(pinion.rootConeAngle);
123-
summary += QString("module: %1\n").arg(pinion.module);
124-
summary += QString("faceConeOffset: %1\n").arg(pinion.faceConeOffset);
125-
summary += QString("rootConeOffset: %1\n").arg(pinion.rootConeOffset);
126-
summary += QString("innerConeDistance: %1\n").arg(pinion.innerConeDistance);
127-
summary += QString("outerConeDistance: %1\n").arg(pinion.outerConeDistance);
128-
summary += QString("pitchConeDistance: %1\n").arg(pinion.pitchConeDistance);
129-
summary += QString("addendum: %1\n").arg(pinion.addendum);
130-
summary += QString("dedendum: %1\n").arg(pinion.dedendum);
131-
summary += QString("backlash: %1\n").arg(pinion.backlash);
132-
summary += QString("shaftAngle: %1\n").arg(pinion.shaftAngle);
133-
summary += QString("pressureAngle: %1\n").arg(pinion.pressureAngle);
134-
summary += QString("spiralAngle: %1\n").arg(pinion.spiralAngle);
135-
summary += QString("spiralType: %1\n")
136-
.arg(spiralFunctionUtils::toString(pinion.spiralType));
137-
138-
output->setText(summary);
139-
97+
// Table widget: Variable | Gear | Pinion
98+
// If Gear and Pinion values are same, cells are merged
99+
QTableWidget* table = new QTableWidget(resultDialog);
100+
table->setColumnCount(3);
101+
table->setHorizontalHeaderLabels({"Variable", "Gear", "Pinion"});
102+
table->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
103+
104+
// Helper lambda to insert rows
105+
auto addRow = [&](const QString& name, const QString& gearVal,
106+
const QString& pinionVal) {
107+
int row = table->rowCount();
108+
table->insertRow(row);
109+
110+
table->setItem(row, 0, new QTableWidgetItem(name));
111+
112+
if (gearVal == pinionVal) {
113+
// Insert merged cell for gear+pinion
114+
table->setItem(row, 1, new QTableWidgetItem(gearVal));
115+
table->setSpan(row, 1, 1, 2); // Merge Gear + Pinion
116+
table->item(row, 1)->setTextAlignment(Qt::AlignCenter);
117+
} else {
118+
table->setItem(row, 1, new QTableWidgetItem(gearVal));
119+
table->setItem(row, 2, new QTableWidgetItem(pinionVal));
120+
}
121+
};
122+
123+
// Fill rows
124+
addRow("Teeth", QString::number(gear.numTeeth),
125+
QString::number(pinion.numTeeth));
126+
addRow("Pitch Cone Angle", QString::number(gear.pitchConeAngle),
127+
QString::number(pinion.pitchConeAngle));
128+
addRow("Face Cone Angle", QString::number(gear.faceConeAngle),
129+
QString::number(pinion.faceConeAngle));
130+
addRow("Root Cone Angle", QString::number(gear.rootConeAngle),
131+
QString::number(pinion.rootConeAngle));
132+
addRow("Module", QString::number(gear.module),
133+
QString::number(pinion.module));
134+
addRow("Face Cone Offset", QString::number(gear.faceConeOffset),
135+
QString::number(pinion.faceConeOffset));
136+
addRow("Root Cone Offset", QString::number(gear.rootConeOffset),
137+
QString::number(pinion.rootConeOffset));
138+
addRow("Inner Cone Distance", QString::number(gear.innerConeDistance),
139+
QString::number(pinion.innerConeDistance));
140+
addRow("Outer Cone Distance", QString::number(gear.outerConeDistance),
141+
QString::number(pinion.outerConeDistance));
142+
addRow("Pitch Cone Distance", QString::number(gear.pitchConeDistance),
143+
QString::number(pinion.pitchConeDistance));
144+
addRow("Addendum", QString::number(gear.addendum),
145+
QString::number(pinion.addendum));
146+
addRow("Dedendum", QString::number(gear.dedendum),
147+
QString::number(pinion.dedendum));
148+
addRow("Backlash", QString::number(gear.backlash),
149+
QString::number(pinion.backlash));
150+
addRow("Shaft Angle", QString::number(gear.shaftAngle),
151+
QString::number(pinion.shaftAngle));
152+
addRow("Pressure Angle", QString::number(gear.pressureAngle),
153+
QString::number(pinion.pressureAngle));
154+
addRow("Spiral Angle", QString::number(gear.spiralAngle),
155+
QString::number(pinion.spiralAngle));
156+
addRow("Spiral Function", spiralFunctionUtils::toString(gear.spiralType),
157+
spiralFunctionUtils::toString(pinion.spiralType));
158+
159+
table->setShowGrid(true);
160+
dlgLayout->addWidget(table);
161+
162+
// Back & Exit buttons
163+
QHBoxLayout* buttonLayout = new QHBoxLayout();
140164
QPushButton* backBtn = new QPushButton("Back", resultDialog);
141165
QPushButton* exitBtn = new QPushButton("Exit", resultDialog);
166+
buttonLayout->addWidget(backBtn);
167+
buttonLayout->addWidget(exitBtn);
142168

143169
QObject::connect(backBtn, &QPushButton::clicked, resultDialog,
144170
&QDialog::accept);
145171
QObject::connect(exitBtn, &QPushButton::clicked, resultDialog,
146172
&QDialog::reject);
147173

148-
dlgLayout->addWidget(output);
149-
dlgLayout->addWidget(backBtn);
150-
dlgLayout->addWidget(exitBtn);
174+
dlgLayout->addLayout(buttonLayout);
151175

152176
resultDialog->exec(); // modal
153177
});

0 commit comments

Comments
 (0)