Sat, 08 Apr 2023 16:41:40 +0300
Readd the MainWindow class and renderstyle button handling to it
#include "mainwindow.h" static constexpr MemberData<MainWindow, QAction*, gl::RenderStyle> renderStyleButtons[] = { { offsetof(MainWindow, actionRenderStyleNormal), gl::RenderStyle::Normal }, { offsetof(MainWindow, actionRenderStyleBfc), gl::RenderStyle::BfcRedGreen }, { offsetof(MainWindow, actionRenderStyleRandom), gl::RenderStyle::RandomColors }, { offsetof(MainWindow, actionRenderStylePickScene), gl::RenderStyle::PickScene }, }; MainWindow::MainWindow(QWidget *parent) : QMainWindow{parent} { this->setupUi(this); for (const auto& memberData : ::renderStyleButtons) { QAction* action = memberData.memberInstance(this); const gl::RenderStyle newStyle = memberData.payload; QObject::connect(action, &QAction::triggered, [this, newStyle]{ Q_EMIT this->renderStyleSelected(newStyle); this->setRenderStyle(newStyle); }); } } void MainWindow::setRenderStyle(gl::RenderStyle style) { for (const auto& memberData : ::renderStyleButtons) { QAction* const action = memberData.memberInstance(this); const gl::RenderStyle buttonRenderStyle = memberData.payload; action->setChecked(style == buttonRenderStyle); } }