update
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
#include "widgets/CompactNumericSpinBox.h"
|
||||
|
||||
#include <QAbstractSpinBox>
|
||||
#include <QSizePolicy>
|
||||
|
||||
namespace gui {
|
||||
|
||||
namespace {
|
||||
|
||||
void polishCompact(QAbstractSpinBox* box, int maxWidthPx) {
|
||||
if (!box) {
|
||||
return;
|
||||
}
|
||||
box->setObjectName(QStringLiteral("CompactNumericSpin"));
|
||||
box->setButtonSymbols(QAbstractSpinBox::UpDownArrows);
|
||||
box->setFocusPolicy(Qt::StrongFocus);
|
||||
box->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
||||
box->setMinimumWidth(22);
|
||||
box->setMaximumWidth(maxWidthPx);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
CompactIntSpinBox::CompactIntSpinBox(QWidget* parent, int maxWidthPx)
|
||||
: QSpinBox(parent) {
|
||||
polishCompact(this, maxWidthPx);
|
||||
}
|
||||
|
||||
CompactDoubleSpinBox::CompactDoubleSpinBox(QWidget* parent, int maxWidthPx)
|
||||
: QDoubleSpinBox(parent) {
|
||||
polishCompact(this, maxWidthPx);
|
||||
}
|
||||
|
||||
} // namespace gui
|
||||
@@ -0,0 +1,19 @@
|
||||
#pragma once
|
||||
|
||||
#include <QDoubleSpinBox>
|
||||
#include <QSpinBox>
|
||||
|
||||
namespace gui {
|
||||
|
||||
/// 属性栏用紧凑数值框:固定最大宽度,避免撑开过宽。
|
||||
class CompactIntSpinBox final : public QSpinBox {
|
||||
public:
|
||||
explicit CompactIntSpinBox(QWidget* parent = nullptr, int maxWidthPx = 56);
|
||||
};
|
||||
|
||||
class CompactDoubleSpinBox final : public QDoubleSpinBox {
|
||||
public:
|
||||
explicit CompactDoubleSpinBox(QWidget* parent = nullptr, int maxWidthPx = 58);
|
||||
};
|
||||
|
||||
} // namespace gui
|
||||
@@ -0,0 +1,82 @@
|
||||
#include "widgets/PropertyPanelControls.h"
|
||||
|
||||
#include <QFormLayout>
|
||||
#include <QSizePolicy>
|
||||
#include <QTextEdit>
|
||||
#include <QTextOption>
|
||||
#include <QWidget>
|
||||
|
||||
namespace gui {
|
||||
|
||||
void polishPropertyStretchyTextField(QWidget* w) {
|
||||
if (!w) {
|
||||
return;
|
||||
}
|
||||
w->setMinimumWidth(0);
|
||||
w->setMaximumWidth(QWIDGETSIZE_MAX);
|
||||
const QSizePolicy sp = w->sizePolicy();
|
||||
w->setSizePolicy(QSizePolicy::MinimumExpanding, sp.verticalPolicy());
|
||||
}
|
||||
|
||||
void polishPropertyFormLayout(QFormLayout* form) {
|
||||
if (!form) {
|
||||
return;
|
||||
}
|
||||
form->setContentsMargins(0, 0, 0, 0);
|
||||
form->setSpacing(6);
|
||||
form->setHorizontalSpacing(8);
|
||||
form->setVerticalSpacing(6);
|
||||
form->setRowWrapPolicy(QFormLayout::WrapAllRows);
|
||||
form->setLabelAlignment(Qt::AlignLeft | Qt::AlignTop);
|
||||
form->setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow);
|
||||
}
|
||||
|
||||
void polishPropertyVBoxLayout(QVBoxLayout* lay) {
|
||||
if (!lay) {
|
||||
return;
|
||||
}
|
||||
lay->setContentsMargins(0, 0, 0, 0);
|
||||
lay->setSpacing(8);
|
||||
}
|
||||
|
||||
PropertyPanelLineEdit::PropertyPanelLineEdit(QWidget* parent)
|
||||
: QLineEdit(parent) {
|
||||
setObjectName(QStringLiteral("PropertyPanelLineEdit"));
|
||||
setMinimumWidth(0);
|
||||
setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
|
||||
setMaximumHeight(26);
|
||||
}
|
||||
|
||||
PropertyPanelComboBox::PropertyPanelComboBox(QWidget* parent)
|
||||
: QComboBox(parent) {
|
||||
setObjectName(QStringLiteral("PropertyPanelComboBox"));
|
||||
setMinimumWidth(0);
|
||||
setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
|
||||
setMaximumHeight(26);
|
||||
}
|
||||
|
||||
PropertyPanelCheckBox::PropertyPanelCheckBox(const QString& text, QWidget* parent)
|
||||
: QCheckBox(text, parent) {
|
||||
setObjectName(QStringLiteral("PropertyPanelCheckBox"));
|
||||
setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
|
||||
}
|
||||
|
||||
PropertyPanelPushButton::PropertyPanelPushButton(const QString& text, QWidget* parent)
|
||||
: QPushButton(text, parent) {
|
||||
setObjectName(QStringLiteral("PropertyPanelPushButton"));
|
||||
setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Fixed);
|
||||
setMaximumHeight(26);
|
||||
}
|
||||
|
||||
// TextEdit
|
||||
PropertyPanelTextEdit::PropertyPanelTextEdit(QWidget* parent)
|
||||
: QTextEdit(parent) {
|
||||
setObjectName(QStringLiteral("PropertyPanelTextEdit"));
|
||||
setMinimumWidth(80);
|
||||
setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Minimum);
|
||||
setWordWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere);
|
||||
setLineWrapMode(QTextEdit::WidgetWidth);
|
||||
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
||||
}
|
||||
|
||||
} // namespace gui
|
||||
@@ -0,0 +1,46 @@
|
||||
#pragma once
|
||||
|
||||
#include <QCheckBox>
|
||||
#include <QComboBox>
|
||||
#include <QFormLayout>
|
||||
#include <QLineEdit>
|
||||
#include <QPushButton>
|
||||
#include <QTextEdit>
|
||||
#include <QVBoxLayout>
|
||||
|
||||
namespace gui {
|
||||
|
||||
/// 单行文本/容器:随面板宽度伸缩,不强行指定最小像素宽。
|
||||
void polishPropertyStretchyTextField(QWidget* w);
|
||||
|
||||
/// 紧凑属性表:标签在上、控件在下(默认 ~200px 宽即可完整显示,无并排裁切)。
|
||||
void polishPropertyFormLayout(QFormLayout* form);
|
||||
|
||||
void polishPropertyVBoxLayout(QVBoxLayout* lay);
|
||||
|
||||
class PropertyPanelLineEdit final : public QLineEdit {
|
||||
public:
|
||||
explicit PropertyPanelLineEdit(QWidget* parent = nullptr);
|
||||
};
|
||||
|
||||
class PropertyPanelComboBox final : public QComboBox {
|
||||
public:
|
||||
explicit PropertyPanelComboBox(QWidget* parent = nullptr);
|
||||
};
|
||||
|
||||
class PropertyPanelCheckBox final : public QCheckBox {
|
||||
public:
|
||||
explicit PropertyPanelCheckBox(const QString& text, QWidget* parent = nullptr);
|
||||
};
|
||||
|
||||
class PropertyPanelPushButton final : public QPushButton {
|
||||
public:
|
||||
explicit PropertyPanelPushButton(const QString& text, QWidget* parent = nullptr);
|
||||
};
|
||||
|
||||
class PropertyPanelTextEdit final : public QTextEdit {
|
||||
public:
|
||||
explicit PropertyPanelTextEdit(QWidget* parent = nullptr);
|
||||
};
|
||||
|
||||
} // namespace gui
|
||||
Reference in New Issue
Block a user