qt实现实现一个圆柱体类,类中包含私有数据成员半径和高;包含设置圆柱体半径和高、计算圆柱体体积;获取圆柱体半径、高、圆柱体体积的成员函数;能够对数据有效性进行判断处理。编写主函数测试类的使用。
时间: 2024-12-23 21:23:10 浏览: 1
在Qt中,我们可以创建一个名为Cylinder的类来模拟圆柱体。首先,我们需要定义一些私有数据成员表示半径和高,并提供相应的getter和setter方法以及计算体积的方法。同时,为了处理数据的有效性,我们将在setter方法中添加一些验证。以下是Cylinder类的一个简单实现:
```cpp
#include <QObject>
#include <QPrivateSignal>
class Cylinder : public QObject
{
Q_OBJECT
private:
Q_PROPERTY(double radius READ radius WRITE setRadius NOTIFY radiusChanged)
Q_PROPERTY(double height READ height WRITE setHeight NOTIFY heightChanged)
signals:
void radiusChanged(double newRadius);
void heightChanged(double newHeight);
private slots:
void setRadius(double newRadius) {
if (newRadius > 0) {
_radius = newRadius;
emit radiusChanged(newRadius);
} else {
qDebug() << "Invalid radius value.";
}
}
void setHeight(double newHeight) {
if (newHeight > 0) {
_height = newHeight;
emit heightChanged(newHeight);
} else {
qDebug() << "Invalid height value.";
}
}
public:
double getRadius() const { return _radius; }
double getHeight() const { return _height; }
// 计算圆柱体体积
double calculateVolume() const {
return M_PI * pow(_radius, 2) * _height;
}
public slots:
// 主函数测试类的使用
static void testCylinder(QObject* parent = nullptr) {
auto cylinder = new Cylinder(parent);
cylinder->setRadius(5.0); // 设置半径
cylinder->setHeight(10.0); // 设置高度
qDebug() << "Radius: " << cylinder->getRadius();
qDebug() << "Height: " << cylinder->getHeight();
qDebug() << "Volume: " << cylinder->calculateVolume();
}
private:
double _radius;
double _height;
};
```
这个类中,我们定义了两个信号(radiusChanged和heightChanged),每当半径或高度改变时会被触发。在主函数testCylinder中,你可以实例化Cylinder对象并测试其功能。
阅读全文