You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
66 lines
1.8 KiB
66 lines
1.8 KiB
#include "controls.h"
|
|
|
|
QFrame *horizontal_line(QWidget *parent) {
|
|
QFrame *line = new QFrame(parent);
|
|
line->setFrameShape(QFrame::StyledPanel);
|
|
line->setStyleSheet(R"(
|
|
margin-left: 40px;
|
|
margin-right: 40px;
|
|
border-width: 1px;
|
|
border-bottom-style: solid;
|
|
border-color: gray;
|
|
)");
|
|
line->setFixedHeight(2);
|
|
return line;
|
|
}
|
|
|
|
AbstractControl::AbstractControl(const QString &title, const QString &desc, const QString &icon, QWidget *parent) : QFrame(parent) {
|
|
QVBoxLayout *vlayout = new QVBoxLayout();
|
|
vlayout->setMargin(0);
|
|
|
|
hlayout = new QHBoxLayout;
|
|
hlayout->setMargin(0);
|
|
hlayout->setSpacing(20);
|
|
|
|
// left icon
|
|
if (!icon.isEmpty()) {
|
|
QPixmap pix(icon);
|
|
QLabel *icon = new QLabel();
|
|
icon->setPixmap(pix.scaledToWidth(80, Qt::SmoothTransformation));
|
|
icon->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed));
|
|
hlayout->addWidget(icon);
|
|
}
|
|
|
|
// title
|
|
title_label = new QPushButton(title);
|
|
title_label->setStyleSheet("font-size: 50px; font-weight: 400; text-align: left;");
|
|
hlayout->addWidget(title_label);
|
|
|
|
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, [=]() {
|
|
if (!description->isVisible()) {
|
|
emit showDescription();
|
|
}
|
|
description->setVisible(!description->isVisible());
|
|
});
|
|
}
|
|
|
|
setLayout(vlayout);
|
|
setStyleSheet("background-color: transparent;");
|
|
}
|
|
|
|
void AbstractControl::hideEvent(QHideEvent *e){
|
|
if(description != nullptr){
|
|
description->hide();
|
|
}
|
|
}
|
|
|