QDoubleSpinBox
次のように aと aを接続したいQSlider
:
QObject::connect(ui->myDoubleSpinBox, SIGNAL(valueChanged(double)),
ui->mySlider, SLOT(setValue(double)));
QObject::connect(ui->mySlider, SIGNAL(valueChanged(double)),
ui->myDoubleSpinBox, SLOT(setValue(double)));
QSlider は int 値のみを処理するため、これは機能しません。そこで、QSlider にカスタム スロットを追加する必要があると思います。
QSlider から派生した新しいクラスを作成し、次のようにスロットを実装することを考えました:
QDoubleSlider.hpp
#ifndef QDOUBLESLIDER_H
#define QDOUBLESLIDER_H
#include <QSlider>
class QDoubleSlider : public QSlider
{
Q_OBJECT
public:
explicit QDoubleSlider(QObject *parent = 0);
signals:
public slots:
void setValue(double givenValue);
};
#endif // QDOUBLESLIDER_H
QDoubleSlider.cpp
#include "qdoubleslider.h"
QDoubleSlider::QDoubleSlider(QObject *parent) :
QSlider(parent)
{
}
void QDoubleSlider::setValue(double givenValue)
{
// code
}
今、私は2つの問題を抱えています:
- コンパイラーは、コンストラクターでのから
QObject*
への無効な変換について不平を言います。QWidget*
- setValue の仕組みがわからないため、そのスロットを実装する方法さえわかりません。
何か案は?