添加creeper-qt最新依赖

This commit is contained in:
2025-11-25 15:59:47 +08:00
parent 0ec07218ab
commit fb1a30fc94
89 changed files with 8520 additions and 0 deletions

View File

@@ -0,0 +1,47 @@
#pragma once
#include <concepts>
#include <qwidget.h>
#include <utility>
namespace creeper {
template <class T>
concept widget_trait = std::convertible_to<T*, QWidget*>;
template <class T>
concept widget_pointer_trait = std::convertible_to<T, QWidget*>;
template <class T>
concept layout_trait = std::convertible_to<T*, QLayout*>;
template <class T>
concept layout_pointer_trait = std::convertible_to<T, QLayout*>;
template <class T>
concept item_trait = widget_trait<T> || layout_trait<T>;
template <class T>
concept linear_trait = requires(T t) {
{ t.addWidget(std::declval<QWidget*>(), int {}, Qt::AlignCenter) };
{ t.addLayout(std::declval<QLayout*>(), int {}) };
};
template <class T>
concept stacked_trait = requires(T t) {
{t.addWidget(std::declval<QWidget*>())};
{t.insertWidget(int {}, std::declval<QWidget*>())};
};
template <class T>
concept area_trait = requires(T t) {
{ t.setWidget(std::declval<QWidget*>()) };
{ t.setLayout(std::declval<QLayout*>()) };
};
template <class T>
concept selectable_trait = requires(T t) {
{ std::as_const(t).selected() } -> std::convertible_to<bool>;
{ t.set_selected(bool {}) };
};
}