Всем доброго времени!
У меня небольшая, но как мне кажется нетривиальная задача. Нужно запретить редактировать значение в QSpinBox через непосредственно ввод этого значения, но разрешить редактировать его через кнопки спинбокса. Хотела сделать так:
ui->testSpinBox->setReadonly(true);
Но в этом случае значение не редактируется и через кнопки тоже. Как можно не сильно усложняя добиться такого эффекта?
Привет, нужно подкласс от QSpinBox создать, что-то из серии - extendedspinbox.h:
#ifndef EXTENDEDSPINBOX_H #define EXTENDEDSPINBOX_H #include <QSpinBox> class ExtendedSpinBox : public QSpinBox { Q_OBJECT public: explicit ExtendedSpinBox(QWidget *parent = 0); ~ExtendedSpinBox(); private: }; #endif // EXTENDEDSPINBOX_H
extendedspinbox
#include "extendedspinbox.h" #include <QLineEdit> ExtendedSpinBox::ExtendedSpinBox(QWidget *parent) : QSpinBox(parent) { lineEdit()->setReadOnly(true); } ExtendedSpinBox::~ExtendedSpinBox() { delete ui; }
Соответственно readOnly выставляем только для lineEdit.
Добрый вечер! Перенесла в свой проект, работает в точности, как и было надо, спасибо!