- fix: Press up/down arrow key in the option dialog's left panel won't switch page.

This commit is contained in:
Roy Qu 2023-08-13 23:26:31 +08:00
parent dcd53771d3
commit eb1a219de6
3 changed files with 37 additions and 19 deletions

View File

@ -29,6 +29,7 @@ Red Panda C++ Version 2.24
- fix: Crash if close file while auto syntax checking. - fix: Crash if close file while auto syntax checking.
- enhancement: Support sdcc compiler. - enhancement: Support sdcc compiler.
- enhancement: Autowrap tool output text. - enhancement: Autowrap tool output text.
- fix: Press up/down arrow key in the option dialog's left panel won't switch page.
Red Panda C++ Version 2.23 Red Panda C++ Version 2.23

View File

@ -78,6 +78,9 @@ SettingsDialog::SettingsDialog(QWidget *parent) :
ui->widgetsView->setModel(&model); ui->widgetsView->setModel(&model);
delete m; delete m;
connect(ui->widgetsView->selectionModel(), &QItemSelectionModel::currentChanged,
this, &SettingsDialog::onWidgetsViewCurrentChanged);
model.setHorizontalHeaderLabels(QStringList()); model.setHorizontalHeaderLabels(QStringList());
ui->btnApply->setEnabled(false); ui->btnApply->setEnabled(false);
@ -308,25 +311,7 @@ bool SettingsDialog::setCurrentWidget(const QString &widgetName, const QString &
void SettingsDialog::on_widgetsView_clicked(const QModelIndex &index) void SettingsDialog::on_widgetsView_clicked(const QModelIndex &index)
{ {
if (!index.isValid()) showWidget(index);
return;
int i = index.data(GetWidgetIndexRole).toInt();
if (i>=0) {
saveCurrentPageSettings(true);
SettingsWidget* pWidget = mSettingWidgets[i];
if (ui->scrollArea->widget()!=nullptr) {
QWidget* w = ui->scrollArea->takeWidget();
w->setParent(nullptr);
}
ui->scrollArea->setWidget(pWidget);
ui->lblWidgetCaption->setText(QString("%1 > %2").arg(pWidget->group()).arg(pWidget->name()));
ui->btnApply->setEnabled(false);
} else if (model.hasChildren(index)) {
ui->widgetsView->expand(index);
QModelIndex childIndex = this->model.index(0,0,index);
emit ui->widgetsView->clicked(childIndex);
}
} }
void SettingsDialog::widget_settings_changed(bool value) void SettingsDialog::widget_settings_changed(bool value)
@ -334,6 +319,11 @@ void SettingsDialog::widget_settings_changed(bool value)
ui->btnApply->setEnabled(value); ui->btnApply->setEnabled(value);
} }
void SettingsDialog::onWidgetsViewCurrentChanged(const QModelIndex &index, const QModelIndex &/*previous*/)
{
showWidget(index);
}
void SettingsDialog::on_btnCancel_pressed() void SettingsDialog::on_btnCancel_pressed()
{ {
this->close(); this->close();
@ -388,3 +378,26 @@ void SettingsDialog::closeAndQuit()
mAppShouldQuit = true; mAppShouldQuit = true;
close(); close();
} }
void SettingsDialog::showWidget(const QModelIndex &index)
{
if (!index.isValid())
return;
int i = index.data(GetWidgetIndexRole).toInt();
if (i>=0) {
saveCurrentPageSettings(true);
SettingsWidget* pWidget = mSettingWidgets[i];
if (ui->scrollArea->widget()!=nullptr) {
QWidget* w = ui->scrollArea->takeWidget();
w->setParent(nullptr);
}
ui->scrollArea->setWidget(pWidget);
ui->lblWidgetCaption->setText(QString("%1 > %2").arg(pWidget->group()).arg(pWidget->name()));
ui->btnApply->setEnabled(false);
} else if (model.hasChildren(index)) {
ui->widgetsView->expand(index);
QModelIndex childIndex = this->model.index(0,0,index);
emit ui->widgetsView->clicked(childIndex);
}
}

View File

@ -53,7 +53,11 @@ public:
private slots: private slots:
void closeAndQuit(); void closeAndQuit();
void showWidget(const QModelIndex &index);
void widget_settings_changed(bool value); void widget_settings_changed(bool value);
void onWidgetsViewCurrentChanged(const QModelIndex &index, const QModelIndex &previous);
void on_widgetsView_clicked(const QModelIndex &index); void on_widgetsView_clicked(const QModelIndex &index);
void on_btnCancel_pressed(); void on_btnCancel_pressed();