int main(int argc, char *argv[]) { QApplication a(argc, argv); Widget mainWindow; QDial *newDial = new QDial; QProgressBar *newProgressBar = new QProgressBar; newDial->setRange(0,100); newDial->setNotchTarget(5); newDial->setNotchesVisible(true); newDial->setPageStep(20); QObject::connect(newDial,SIGNAL(valueChanged(int)),newProgressBar,SLOT(setValue(int))); QBoxLayout *boxLayout = new QBoxLayout(QBoxLayout::TopToBottom); boxLayout->addWidget(newDial); boxLayout->addWidget(newProgressBar); mainWindow.setWindowTitle("Dial Change"); mainWindow.setLayout(boxLayout); mainWindow.setGeometry(430,330,200,200); mainWindow.show(); return a.exec(); }
int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton hello("Hello world!"); hello.resize(100, 30); hello.setFont(QFont("Arial", 18, QFont::Bold)); hello.setGeometry(400, 200 , 180, 40); QDial dial; dial.show(); hello.show(); return app.exec(); }
void tst_QBoxLayout::setGeometry() { QWidget w; QVBoxLayout *lay = new QVBoxLayout; lay->setMargin(0); lay->setSpacing(0); QHBoxLayout *lay2 = new QHBoxLayout; QDial *dial = new QDial; lay2->addWidget(dial); lay2->setAlignment(Qt::AlignTop); lay2->setAlignment(Qt::AlignRight); lay->addLayout(lay2); w.setLayout(lay); w.show(); QRect newGeom(0, 0, 70, 70); lay2->setGeometry(newGeom); QVERIFY2(newGeom.contains(dial->geometry()), "dial->geometry() should be smaller and within newGeom"); }
void QuteKnob::knobChanged(int value) { #ifdef USE_WIDGET_MUTEX widgetLock.lockForWrite(); #endif double min = property("QCS_minimum").toDouble(); double max = property("QCS_maximum").toDouble(); QDial *knob = static_cast<QDial *>(m_widget); double normalized = (double) (value - knob->minimum()) / (double) (knob->maximum() - knob->minimum()); m_value = min + (normalized * (max-min)); // setInternalValue(scaledValue); m_valueChanged = true; QPair<QString, double> channelValue(m_channel, m_value); #ifdef USE_WIDGET_MUTEX widgetLock.unlock(); #endif emit newValue(channelValue); }
int main(int argc, char **argv) { QApplication app(argc, argv); QDial *dial = new QDial(); dial->show(); QLCDNumber *lcdnumber = new QLCDNumber(); lcdnumber->display(12345); lcdnumber->show(); QSlider *slider = new QSlider(Qt::Horizontal); slider->show(); QHBoxLayout *hbox = new QHBoxLayout(); QPushButton *button = new QPushButton("Push Me"); QLineEdit *input = new QLineEdit(); hbox->addWidget(button); hbox->addWidget(input); QWidget *widget = new QWidget(); widget->setLayout(hbox); widget->show(); return app.exec(); }
void tst_QDial::valueChanged() { QDial dial; dial.setMinimum(0); dial.setMaximum(100); QSignalSpy spy(&dial, SIGNAL(valueChanged(int))); dial.setValue(50); QCOMPARE(spy.count(), 1); spy.clear(); dial.setValue(25); QCOMPARE(spy.count(), 1); spy.clear(); // repeat! dial.setValue(25); QCOMPARE(spy.count(), 0); }
int Dial::wrapping(lua_State * L) // const : bool { QDial* obj = QtObject<QDial>::check( L, 1); Util::push( L, obj->wrapping() ); return 1; }
int Dial::setNotchTarget(lua_State * L) // double target { QDial* obj = QtObject<QDial>::check( L, 1); obj->setNotchTarget(Util::toDbl( L, 2 )); return 0; }
int Dial::notchesVisible(lua_State * L) // const : bool { QDial* obj = QtObject<QDial>::check( L, 1); Util::push( L, obj->notchesVisible() ); return 1; }
int Dial::notchTarget(lua_State * L) // const : qreal { QDial* obj = QtObject<QDial>::check( L, 1); Util::push( L, obj->notchTarget() ); return 1; }
int Dial::notchSize(lua_State * L) // const : int { QDial* obj = QtObject<QDial>::check( L, 1); Util::push( L, obj->notchSize() ); return 1; }
/** @brief Initialise un widget avec une liste de parametres @param widget Widget parent @param list Liste des parametres @remarks Les noms des widgets doivent correspondres avec les noms de paramètres */ void Configurable::configToWidget(QObject* widget,ConfigParamList& list){ //scan les elements enfants for(ConfigParamList::const_iterator cur = list.begin(); cur != list.end(); cur++){ QString name = cur->first; QString value = cur->second->getValue(); QWidget* child = widget->findChild<QWidget*>(name); if(child==0){ QPRINT("configToWidget: "+name+" not found"); continue; } // QLineEdit ? QLineEdit *lineEdit = qobject_cast<QLineEdit *>(child); if(lineEdit){ lineEdit->setText(value); continue; } // QComboBox ? QComboBox *comboBox = qobject_cast<QComboBox *>(child); if(comboBox){ comboBox->setCurrentIndex(comboBox->findText(value)); continue; } // QSpinBox ? QSpinBox *spinBox = qobject_cast<QSpinBox *>(child); if(spinBox){ spinBox->setValue(value.toInt()); continue; } // QDoubleSpinBox ? QDoubleSpinBox *doubleSpinBox = qobject_cast<QDoubleSpinBox *>(child); if(doubleSpinBox){ doubleSpinBox->setValue(value.toInt()); continue; } // QTextEdit ? QTextEdit *textEdit = qobject_cast<QTextEdit *>(child); if(textEdit){ textEdit->setPlainText(value); continue; } // QPlainTextEdit ? QPlainTextEdit *plainTextEdit = qobject_cast<QPlainTextEdit *>(child); if(plainTextEdit){ plainTextEdit->setPlainText(value); continue; } // QTimeEdit ? QTimeEdit *timeEdit = qobject_cast<QTimeEdit *>(child); if(timeEdit){ timeEdit->setTime(QTime::fromString(value)); continue; } // QDateTimeEdit ? QDateTimeEdit *dateTimeEdit = qobject_cast<QDateTimeEdit *>(child); if(dateTimeEdit){ timeEdit->setDateTime(QDateTime::fromString(value)); continue; } // QDateEdit ? QDateEdit *dateEdit = qobject_cast<QDateEdit *>(child); if(dateEdit){ dateEdit->setDate(QDate::fromString(value)); continue; } // QDial ? QDial *dial = qobject_cast<QDial *>(child); if(dial){ dial->setValue(value.toInt()); continue; } // QSlider ? QSlider *slider = qobject_cast<QSlider *>(child); if(slider){ slider->setValue(value.toInt()); continue; } } }
/** @copydoc Configurable::configFromWidget */ void Configurable::configFromNextWidget(QObject* cur,ConfigParamList& paramList){ //parametres de configuration const QObjectList& list = cur->children(); for(int i=0;i<list.size();i++) { QObject* child = list.at(i); if(!child->objectName().isEmpty() && child->isWidgetType()) { QString value; // QLineEdit ? QLineEdit *lineEdit = qobject_cast<QLineEdit *>(child); if(lineEdit) value = lineEdit->text(); // QComboBox ? QComboBox *comboBox = qobject_cast<QComboBox *>(child); if(comboBox) value = comboBox->currentText(); // QSpinBox ? QSpinBox *spinBox = qobject_cast<QSpinBox *>(child); if(spinBox) value = spinBox->text(); // QDoubleSpinBox ? QDoubleSpinBox *doubleSpinBox = qobject_cast<QDoubleSpinBox *>(child); if(doubleSpinBox) value = doubleSpinBox->text(); // QTextEdit ? QTextEdit *textEdit = qobject_cast<QTextEdit *>(child); if(textEdit) value = textEdit->toPlainText(); // QPlainTextEdit ? QPlainTextEdit *plainTextEdit = qobject_cast<QPlainTextEdit *>(child); if(plainTextEdit) value = plainTextEdit->toPlainText(); // QTimeEdit ? QTimeEdit *timeEdit = qobject_cast<QTimeEdit *>(child); if(timeEdit) value = timeEdit->text(); // QDateTimeEdit ? QDateTimeEdit *dateTimeEdit = qobject_cast<QDateTimeEdit *>(child); if(dateTimeEdit) value = timeEdit->text(); // QDateEdit ? QDateEdit *dateEdit = qobject_cast<QDateEdit *>(child); if(dateEdit) value = dateEdit->text(); // QDial ? QDial *dial = qobject_cast<QDial *>(child); if(dial) value = QString::number(dial->value()); // QSlider ? QSlider *slider = qobject_cast<QSlider *>(child); if(slider) value = QString::number(slider->value()); //sauvegarde la valeur if(!value.isNull()){ /*#ifdef _DEBUG QPRINT("loadConfig >> "+child->objectName()+"="+value); #endif*/ if(paramList.find(child->objectName()) != paramList.end()) paramList[child->objectName()]->setValue(value); else paramList[child->objectName()] = new ConfigParam(value,""); } } Configurable::configFromNextWidget(child,paramList); } }
void tst_QDial::sliderMoved() { //this tests that when dragging the arrow that the sliderMoved signal is emitted //even if tracking is set to false QDial dial; dial.setTracking(false); dial.setMinimum(0); dial.setMaximum(100); dial.show(); QPoint init(dial.width()/4, dial.height()/2); QMouseEvent pressevent(QEvent::MouseButtonPress, init, Qt::LeftButton, Qt::LeftButton, 0); qApp->sendEvent(&dial, &pressevent); QSignalSpy sliderspy(&dial, SIGNAL(sliderMoved(int))); QSignalSpy valuespy(&dial, SIGNAL(valueChanged(int))); { //move on top of the slider init = QPoint(dial.width()/2, dial.height()/4); QMouseEvent moveevent(QEvent::MouseMove, init, Qt::LeftButton, Qt::LeftButton, 0); qApp->sendEvent(&dial, &moveevent); QCOMPARE( sliderspy.count(), 1); QCOMPARE( valuespy.count(), 0); } { //move on the right of the slider init = QPoint(dial.width()*3/4, dial.height()/2); QMouseEvent moveevent(QEvent::MouseMove, init, Qt::LeftButton, Qt::LeftButton, 0); qApp->sendEvent(&dial, &moveevent); QCOMPARE( sliderspy.count(), 2); QCOMPARE( valuespy.count(), 0); } QMouseEvent releaseevent(QEvent::MouseButtonRelease, init, Qt::LeftButton, Qt::LeftButton, 0); qApp->sendEvent(&dial, &releaseevent); QCOMPARE( valuespy.count(), 1); // valuechanged signal should be called at this point }
void tst_QDial::wrappingCheck() { //This tests if dial will wrap past the maximum value back to the minimum //and vice versa when changing the value with a keypress QDial dial; dial.setMinimum(0); dial.setMaximum(100); dial.setSingleStep(1); dial.setWrapping(true); dial.setValue(99); dial.show(); { //set value to maximum but do not wrap QTest::keyPress(&dial, Qt::Key_Up); QCOMPARE( dial.value(), 100); } { //step up once more and wrap clockwise to minimum + 1 QTest::keyPress(&dial, Qt::Key_Up); QCOMPARE( dial.value(), 1); } { //step down once, and wrap anti-clockwise to minimum, then again to maximum - 1 QTest::keyPress(&dial, Qt::Key_Down); QCOMPARE( dial.value(), 0); QTest::keyPress(&dial, Qt::Key_Down); QCOMPARE( dial.value(), 99); } { //when wrapping property is false no wrapping will occur dial.setWrapping(false); dial.setValue(100); QTest::keyPress(&dial, Qt::Key_Up); QCOMPARE( dial.value(), 100); dial.setValue(0); QTest::keyPress(&dial, Qt::Key_Down); QCOMPARE( dial.value(), 0); } { //When the step is really big or small, wrapping should still behave dial.setWrapping(true); dial.setValue(dial.minimum()); dial.setSingleStep(305); QTest::keyPress(&dial, Qt::Key_Up); QCOMPARE( dial.value(), 5); dial.setValue(dial.minimum()); QTest::keyPress(&dial, Qt::Key_Down); QCOMPARE( dial.value(), 95); dial.setMinimum(-30); dial.setMaximum(-4); dial.setSingleStep(200); dial.setValue(dial.minimum()); QTest::keyPress(&dial, Qt::Key_Down); QCOMPARE( dial.value(), -22); } }