Python: Use LayoutBuilder in settings widgets

The removed margin around the subform at the bottom is intentional.

Change-Id: Ia598a6189111346b0f23f7aa4801ad0db1725fb9
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
hjk
2021-03-11 18:43:47 +01:00
parent 7651601f19
commit 1dba079cbd

View File

@@ -35,6 +35,7 @@
#include <utils/detailswidget.h> #include <utils/detailswidget.h>
#include <utils/environment.h> #include <utils/environment.h>
#include <utils/listmodel.h> #include <utils/listmodel.h>
#include <utils/layoutbuilder.h>
#include <utils/pathchooser.h> #include <utils/pathchooser.h>
#include <utils/synchronousprocess.h> #include <utils/synchronousprocess.h>
#include <utils/treemodel.h> #include <utils/treemodel.h>
@@ -46,13 +47,13 @@
#include <QSettings> #include <QSettings>
#include <QStackedWidget> #include <QStackedWidget>
#include <QTreeView> #include <QTreeView>
#include <QVBoxLayout>
#include <QWidget> #include <QWidget>
namespace Python { namespace Python {
namespace Internal { namespace Internal {
using namespace Utils; using namespace Utils;
using namespace Layouting;
class InterpreterDetailsWidget : public QWidget class InterpreterDetailsWidget : public QWidget
{ {
@@ -61,13 +62,12 @@ public:
: m_name(new QLineEdit) : m_name(new QLineEdit)
, m_executable(new Utils::PathChooser()) , m_executable(new Utils::PathChooser())
{ {
auto mainLayout = new QGridLayout();
mainLayout->addWidget(new QLabel(PythonSettings::tr("Name:")), 0, 0);
mainLayout->addWidget(m_name, 0, 1);
mainLayout->addWidget(new QLabel(PythonSettings::tr("Executable")), 1, 0);
mainLayout->addWidget(m_executable, 1, 1);
m_executable->setExpectedKind(Utils::PathChooser::ExistingCommand); m_executable->setExpectedKind(Utils::PathChooser::ExistingCommand);
setLayout(mainLayout);
Form {
PythonSettings::tr("Name:"), m_name, Break(),
PythonSettings::tr("Executable"), m_executable
}.attachTo(this, false);
} }
void updateInterpreter(const Interpreter &interpreter) void updateInterpreter(const Interpreter &interpreter)
@@ -125,8 +125,6 @@ InterpreterOptionsWidget::InterpreterOptionsWidget(const QList<Interpreter> &int
}); });
m_model.setAllData(interpreters); m_model.setAllData(interpreters);
auto mainLayout = new QVBoxLayout();
auto layout = new QHBoxLayout();
m_view.setModel(&m_model); m_view.setModel(&m_model);
m_view.setHeaderHidden(true); m_view.setHeaderHidden(true);
m_view.setSelectionMode(QAbstractItemView::SingleSelection); m_view.setSelectionMode(QAbstractItemView::SingleSelection);
@@ -135,25 +133,31 @@ InterpreterOptionsWidget::InterpreterOptionsWidget(const QList<Interpreter> &int
&QItemSelectionModel::currentChanged, &QItemSelectionModel::currentChanged,
this, this,
&InterpreterOptionsWidget::currentChanged); &InterpreterOptionsWidget::currentChanged);
auto buttonLayout = new QVBoxLayout();
auto addButton = new QPushButton(PythonSettings::tr("&Add")); auto addButton = new QPushButton(PythonSettings::tr("&Add"));
connect(addButton, &QPushButton::pressed, this, &InterpreterOptionsWidget::addItem); connect(addButton, &QPushButton::pressed, this, &InterpreterOptionsWidget::addItem);
m_deleteButton = new QPushButton(PythonSettings::tr("&Delete")); m_deleteButton = new QPushButton(PythonSettings::tr("&Delete"));
m_deleteButton->setEnabled(false); m_deleteButton->setEnabled(false);
connect(m_deleteButton, &QPushButton::pressed, this, &InterpreterOptionsWidget::deleteItem); connect(m_deleteButton, &QPushButton::pressed, this, &InterpreterOptionsWidget::deleteItem);
m_makeDefaultButton = new QPushButton(PythonSettings::tr("&Make Default")); m_makeDefaultButton = new QPushButton(PythonSettings::tr("&Make Default"));
m_makeDefaultButton->setEnabled(false); m_makeDefaultButton->setEnabled(false);
connect(m_makeDefaultButton, &QPushButton::pressed, this, &InterpreterOptionsWidget::makeDefault); connect(m_makeDefaultButton, &QPushButton::pressed, this, &InterpreterOptionsWidget::makeDefault);
mainLayout->addLayout(layout);
mainLayout->addWidget(m_detailsWidget);
m_detailsWidget->hide(); m_detailsWidget->hide();
setLayout(mainLayout);
layout->addWidget(&m_view); Column buttons {
layout->addLayout(buttonLayout); addButton,
buttonLayout->addWidget(addButton); m_deleteButton,
buttonLayout->addWidget(m_deleteButton); m_makeDefaultButton,
buttonLayout->addWidget(m_makeDefaultButton); Stretch()
buttonLayout->addStretch(10); };
Column {
Row { &m_view, buttons },
m_detailsWidget
}.attachTo(this);
} }
void InterpreterOptionsWidget::apply() void InterpreterOptionsWidget::apply()