mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-08-21 16:23:46 +08:00
@@ -183,10 +183,10 @@ private:
|
||||
bool store_confirm = false;
|
||||
};
|
||||
|
||||
class ButtonParamControl : public AbstractControl {
|
||||
class MultiButtonControl : public AbstractControl {
|
||||
Q_OBJECT
|
||||
public:
|
||||
ButtonParamControl(const QString ¶m, const QString &title, const QString &desc, const QString &icon,
|
||||
MultiButtonControl(const QString &title, const QString &desc, const QString &icon,
|
||||
const std::vector<QString> &button_texts, const int minimum_button_width = 225) : AbstractControl(title, desc, icon) {
|
||||
const QString style = R"(
|
||||
QPushButton {
|
||||
@@ -208,24 +208,19 @@ public:
|
||||
color: #33E4E4E4;
|
||||
}
|
||||
)";
|
||||
key = param.toStdString();
|
||||
int value = atoi(params.get(key).c_str());
|
||||
|
||||
button_group = new QButtonGroup(this);
|
||||
button_group->setExclusive(true);
|
||||
for (int i = 0; i < button_texts.size(); i++) {
|
||||
QPushButton *button = new QPushButton(button_texts[i], this);
|
||||
button->setCheckable(true);
|
||||
button->setChecked(i == value);
|
||||
button->setStyleSheet(style);
|
||||
button->setMinimumWidth(minimum_button_width);
|
||||
hlayout->addWidget(button);
|
||||
button_group->addButton(button, i);
|
||||
}
|
||||
|
||||
QObject::connect(button_group, QOverload<int>::of(&QButtonGroup::buttonClicked), [=](int id) {
|
||||
params.put(key, std::to_string(id));
|
||||
});
|
||||
QObject::connect(button_group, QOverload<int>::of(&QButtonGroup::buttonClicked), this, &MultiButtonControl::buttonClicked);
|
||||
}
|
||||
|
||||
void setEnabled(bool enable) {
|
||||
@@ -238,6 +233,31 @@ public:
|
||||
button_group->button(id)->setChecked(true);
|
||||
}
|
||||
|
||||
signals:
|
||||
void buttonClicked(int id);
|
||||
|
||||
protected:
|
||||
QButtonGroup *button_group;
|
||||
};
|
||||
|
||||
class ButtonParamControl : public MultiButtonControl {
|
||||
Q_OBJECT
|
||||
public:
|
||||
ButtonParamControl(const QString ¶m, const QString &title, const QString &desc, const QString &icon,
|
||||
const std::vector<QString> &button_texts, const int minimum_button_width = 225) : MultiButtonControl(title, desc, icon,
|
||||
button_texts, minimum_button_width) {
|
||||
key = param.toStdString();
|
||||
int value = atoi(params.get(key).c_str());
|
||||
|
||||
if (value > 0 && value < button_group->buttons().size()) {
|
||||
button_group->button(value)->setChecked(true);
|
||||
}
|
||||
|
||||
QObject::connect(this, QOverload<int>::of(&MultiButtonControl::buttonClicked), [=](int id) {
|
||||
params.put(key, std::to_string(id));
|
||||
});
|
||||
}
|
||||
|
||||
void refresh() {
|
||||
int value = atoi(params.get(key).c_str());
|
||||
button_group->button(value)->setChecked(true);
|
||||
@@ -250,7 +270,6 @@ public:
|
||||
private:
|
||||
std::string key;
|
||||
Params params;
|
||||
QButtonGroup *button_group;
|
||||
};
|
||||
|
||||
class ListWidget : public QWidget {
|
||||
|
||||
Reference in New Issue
Block a user