WSJT-X/widgets/HintedSpinBox.hpp
Bill Somerville 947b429723 Start implememntation of database based Fox log model and a new Fox log window widget
This change incorporates a reorganization of the GUI code with
widgets, validators, models, and item delegates being moved to
sub-directories.

Relax  the   requirements  of   the  ForeignKeyDelegate   and  related
CandidateKeyFilter classes to  allow them to work  with constant model
pointers for both referenced and referencing models.
2018-11-07 17:49:45 +00:00

54 lines
1.3 KiB
C++

#ifndef HINTED_SPIN_BOX_HPP_
#define HINTED_SPIN_BOX_HPP_
#include <vector>
#include <QSpinBox>
//
// HintedSpinBox - QSpinBox refinement with an optional sequence of
// discrete hints
//
// The hint sequence values are used as step values and can
// optionally define the minimum and maximum value. Intermediate
// values are allowed but the step up/down arrows and accelerator
// keys will only use the hints.
//
// Ensure that the default minimum and maximum values are sufficient
// to allow initial initialization if done before the hints are set.
//
class HintedSpinBox
: public QSpinBox
{
public:
typedef std::vector<int> values_type;
HintedSpinBox (QWidget * parent = nullptr)
: QSpinBox {parent}
{
}
// Initialize sequence of values allowed.
//
// This spin box behaves exactly as a standard QSpinBox if the
// sequence of values is empty.
//
// The minimum and maximum are automatically set to the lowest and
// highest value provided if required.
//
// Returns the previous sequence.
values_type values (values_type values, bool set_min_max = true);
// Read access to the values.
values_type const& values () const {return values_;}
protected:
// override the QSpinBox stepping
void stepBy (int steps) override;
private:
values_type values_;
};
#endif