【发布时间】:2014-01-26 20:49:20
【问题描述】:
我想像这样连接QDoubleSpinBox 和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
}
现在我有两个问题:
- 编译器抱怨构造函数中从
QObject*到QWidget*的转换无效。 - 我不知道 setValue 是如何工作的,因此我什至不知道如何实现该插槽。
有什么想法吗?
【问题讨论】:
标签: c++ qt user-interface signals-slots qslider