  SettingsWindow::SettingsWindow(QWidget *parent) : QFrame(parent) {
    // setup two main layouts
    QVBoxLayout *sidebar_layout = new QVBoxLayout();
    sidebar_layout->setMargin(0);
    panel_layout = new QStackedLayout();
  
    // close button
    QPushButton *close_btn = new QPushButton("X");
    close_btn->setStyleSheet(R"(
      font-size: 90px;
 
</s> remove   AbstractControl(const QString &title, const QString &desc = "", const QString &icon = "");
 </s> add   AbstractControl(const QString &title, const QString &desc = "", const QString &icon = "", QWidget *parent = nullptr); </s> remove   setLayout(hlayout);
 </s> add   vlayout->addLayout(hlayout);

  // description
  if (!desc.isEmpty()) {
    description = new QLabel(desc);
    description->setContentsMargins(40, 20, 40, 20);
    description->setStyleSheet("font-size: 40px; color:grey");
    description->setWordWrap(true);
    description->setVisible(false);
    vlayout->addWidget(description);

    connect(title_label, &QPushButton::clicked, [=]() {
      description->setVisible(!description->isVisible());
    });
  }

  setLayout(vlayout); </s> remove   ParamControl(const QString &param, const QString &title, const QString &desc, const QString &icon) : ToggleControl(title, desc, icon) {
 </s> add   ParamControl(const QString &param, const QString &title, const QString &desc, const QString &icon, QWidget *parent = nullptr) : ToggleControl(title, desc, icon, parent) {
  panel_widget = new QStackedWidget();
  SettingsWindow::SettingsWindow(QWidget *parent) : QFrame(parent) {
    // setup two main layouts
    QVBoxLayout *sidebar_layout = new QVBoxLayout();
    sidebar_layout->setMargin(0);
  panel_widget = new QStackedWidget();
  
    // close button
    QPushButton *close_btn = new QPushButton("X");
    close_btn->setStyleSheet(R"(
      font-size: 90px;
keep keep keep keep replace keep keep keep keep keep
 add descriptions in settings (#20453)

* add descriptions

* scroll scroll

* clean up

* try this

* scrolling on touch

* better scrolling

* we can afford 30fps

* remove that

Co-authored-by: Comma Device <device@comma.ai> 
selfdrive/ui/qt/offroad/settings.cc