#pragma once #include "props/PropertySectionWidget.h" #include #include class QComboBox; class QLineEdit; class QSlider; class QSpinBox; class QCheckBox; class QLabel; namespace gui { class Vec2ParamControl; } namespace gui { struct ToolPropertyUiState { QString displayName; QString text; QPointF position; bool parentRelativeMode = false; int pointerTThousandths = 500; // bubblePointerT01 * 1000,0=左 1000=右 int fontPx = 18; int alignIndex = 1; // 0=left,1=center,2=right bool visible = true; }; class ToolPropertySection final : public PropertySectionWidget { Q_OBJECT public: explicit ToolPropertySection(QWidget* parent = nullptr); void clearDisconnected(); void applyState(const ToolPropertyUiState& s); void setEditingEnabled(bool on); signals: void textCommitted(const QString& text); void pointerTChanged(int thousandths); void fontPxChanged(int px); void alignChanged(int alignIndex); void positionEdited(double x, double y); // 可见性(动画通道):在当前帧写关键帧 void visibleToggled(bool on); private: QLabel* m_positionLabel = nullptr; Vec2ParamControl* m_position = nullptr; QLineEdit* m_text = nullptr; QSlider* m_pointerT = nullptr; QSpinBox* m_fontPx = nullptr; QComboBox* m_align = nullptr; QCheckBox* m_visible = nullptr; }; } // namespace gui