Класс QSpinBox

   
На этом шаге рассмотрим класс QSpinBox.

   
Виджет QSpinBox предоставляет пользователю доступ к ограниченному диапазону чисел. Все вводимые значения проверяются, для предотвращения выхода за пределы диапазона, который устанавливается методом setRange(). Значения можно устанавливать с помощью метода setValue(), а получать — методом value(). При изменении значений посылаются сразу два сигнала valueChanged(): один с параметром типа int, а другой — с const QString&.

   
Можно изменить способ отображения с помощью методов setPrefix() и setSuffix(). Например, вызов следующих методов приведет к тому, что число будет отображаться в скобках:

pspb->setPrefix("(");
pspb->setSuffix(")");

   
Можно изменить изображение стрелок на символы + (плюс) или ? (минус), передав методу setButtonSymbols() флаг PlusMinus.

   
На рис. 1 изображен пример, позволяющий выбирать толщину рамки для надписи.


Рис.1. Пример счетчика

   
Для реализации примера, представленного рис.1, определим класс SB, который наследуется от класса QWidget:

class SB : public  {
       Q_OBJECT
private:
//объявляем переменные
       QSpinBox *s;
       QLabel *l;
       QString str;
public:
//объявляем конструктор класса
       SB(QWidget* pobj = 0);
public slots:
//объявляем слот
       void slotBorder ();

   
Рассмотрим реализацию конструктора класса:

SB::SB(QWidget* pwgt/*= 0*/)
    : QWidget(pwgt)
{
//создаем счетчик
    s = new QSpinBox;
//задаем диапазон значений
    s->setRange(0,10);
//задаем значение счетчика,
//которое отображентся при запуске приложения
    s->setValue(3);
//устанавливаем циклический режим
    s->setWrapping(true);
//создаем надпись
    l = new QLabel;
    l->setAlignment(Qt::AlignCenter);
    l->setFrameStyle(QFrame::Box|QFrame::Raised);
//задаем в качестве толщины рамки значение,
//установленное в счетчике
    l->setLineWidth(s->value());
    l->setMidLineWidth(2);
//сохраняем число, установленное в счетчике в строке
    str=QString::number(s->value());
//выводим число, установленное в счетчике, в надписи
    l->setText(str);
//сигнал счетчика, который возникает при изменении
//значения в нем, вызывает выполнение слота, который
//изменяет толщину рамки надписи и ее текст
    QObject::connect(s, SIGNAL(valueChanged(int)), SLOT(slotBorder()));

    QVBoxLayout* pvbL = new QVBoxLayout;
    pvbL->addWidget(s);
    pvbL->addWidget(l);

    setLayout(pvbL);
}

   
Рассмотрим реализацию слота:

//слот устанавливает толщину рамки и текст надписи
void SB::slotBorder()
{
    str=QString::number(s->value());
    l->setLineWidth(s->value());
    l->setMidLineWidth(2);
    l->setText(str);
}

   
Файлы приложения можно взять Предыдущий шаг
Содержание
Следующий шаг



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий