1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
|
#include <qslider.h>
#include "intedit.h"
#include <tjutils/tjstring.h> // for itos
#include <tjutils/tjcstd.h> // for strtol
intLineEdit::intLineEdit(int minValue, int maxValue, int value, QWidget *parent, const char *name, int width, int height ) {
gle = new GuiLineEdit(parent, this, SLOT(emitSignal()), width, height);
/* minValue & maxValue unused so far: */
minValue=maxValue=0;
set_value(value);
}
intLineEdit::~intLineEdit() {
delete gle;
}
void intLineEdit::setintLineEditValue( int newValue ) {
set_value(newValue);
}
void intLineEdit::emitSignal() {
if(gle->is_modified()) {
int value=atoi(gle->get_text());
set_value(value);
emit intLineEditValueChanged(value);
}
}
void intLineEdit::set_value(int value) {
gle->set_text( itos(value).c_str() );
}
//////////////////////////////////////////////////////////////
intLineBox::intLineBox(int value,QWidget *parent, const char *name )
: QGroupBox(name,parent) {
grid=new GuiGridLayout( this, 1, 1);
le = new intLineEdit( 0, 0, value, this, "LineEdit", TEXTEDIT_WIDTH, TEXTEDIT_HEIGHT );
grid->add_widget( le->get_widget(), 0, 0);
connect(le,SIGNAL(intLineEditValueChanged( int )), this,SLOT(emitSignal( int )));
connect(this,SIGNAL(SignalToChild( int )), le, SLOT(setintLineEditValue( int)));
}
void intLineBox::setintLineBoxValue( int newvalue ) {
emit SignalToChild( newvalue );
}
void intLineBox::emitSignal( int newvalue ) {
emit intLineBoxValueChanged(newvalue);
}
intLineBox::~intLineBox() {
delete le;
delete grid;
}
//////////////////////////////////////////////////////////////
intScientSlider::intScientSlider(int minValue, int maxValue, int Step, int value, QWidget *parent, const char *name )
: QGroupBox(name, parent ) {
grid=new GuiGridLayout( this, 1, 4);
slider=new GuiSlider(this, minValue, maxValue, Step, value, int(((float)maxValue-(float)minValue)/20.0));
le = new intLineEdit( minValue, maxValue, value, this, "LineEdit" , SLIDER_CELL_WIDTH, SLIDER_CELL_HEIGHT );
grid->add_widget(slider->get_widget(), 0, 0, GuiGridLayout::Default, 1, 3 );
grid->add_widget(le->get_widget(), 0, 3);
// cross-wise connection of slider and line edit
connect(slider->get_widget(), SIGNAL(valueChanged(int)), le, SLOT(setintLineEditValue(int)));
connect(le, SIGNAL(intLineEditValueChanged(int)), slider->get_widget(), SLOT(setValue(int)));
// emit signal whenever of one of both has been changed
connect(slider->get_widget(),SIGNAL(valueChanged(int)), this,SLOT(emitSignal( int )));
connect(le,SIGNAL(intLineEditValueChanged( int )), this,SLOT(emitSignal( int )));
}
void intScientSlider::setintScientSliderValue( int newvalue ) {
slider->set_value(newvalue);
le->setintLineEditValue(newvalue);
}
void intScientSlider::emitSignal( int newvalue ) {
emit intScientSliderValueChanged(newvalue);
}
intScientSlider::~intScientSlider(){
delete le;
delete slider;
delete grid;
}
|