Qt\u7684QSlider\u63a7\u4ef6\u9ed8\u8ba4\u53ea\u80fd\u663e\u793a\u6574\u6570\u503c\uff0c\u5982\u679c\u60f3\u8981\u663e\u793a\u5c0f\u6570\uff0c\u53ef\u4ee5\u901a\u8fc7\u4ee5\u4e0b\u65b9\u6cd5\u5b9e\u73b0\uff1a\n\n1\uff0e\u6269\u5c55QSlider\u63a7\u4ef6\uff1a\u7ee7\u627fQSlider\u7c7b\uff0c\u91cd\u5199paintEvent()\u65b9\u6cd5\uff0c\u5728\u7ed8\u5236\u6ed1\u52a8\u5668\u65f6\u5c06\u6574\u6570\u503c\u8f6c\u6362\u4e3a\u5c0f\u6570\u503c\u8fdb\u884c\u7ed8\u5236\u3002\n\n```cppclass DecimalSlider : public QSlider{ Q_OBJECTpublic: DecimalSlider(QWidget* parent = nullptr) : QSlider(parent) {}

protected: void paintEvent(QPaintEvent* event) override { QSlider::paintEvent(event);

    QPainter painter(this);        painter.setPen(Qt::black);

    qreal value = static_cast<qreal>(this->value()) / this->maximum();        QString text = QString::number(value, 'f', 2); // \u5c06\u5c0f\u6570\u503c\u4fdd\u7559\u4e24\u4f4d\u5c0f\u6570        painter.drawText(rect(), Qt::AlignCenter, text);    }};\n\n2\uff0e\u4f7f\u7528QSlider\u7684valueChanged()\u4fe1\u53f7\u548cQLabel\u63a7\u4ef6\u6765\u663e\u793a\u5c0f\u6570\u503c\u3002\n\n```cppQSlider* slider = new QSlider(Qt::Horizontal);QLabel* label = new QLabel();QObject::connect(slider, &QSlider::valueChanged, [=](int value) {    qreal decimalValue = static_cast<qreal>(value) / slider->maximum();    label->setText(QString::number(decimalValue, 'f', 2));});\n\n\u8fd9\u4e24\u79cd\u65b9\u6cd5\u90fd\u53ef\u4ee5\u5b9e\u73b0\u5728QSlider\u63a7\u4ef6\u4e0a\u663e\u793a\u5c0f\u6570\u503c\uff0c\u53ef\u4ee5\u6839\u636e\u5b9e\u9645\u9700\u6c42\u9009\u62e9\u4f7f\u7528\u3002
Qt QSlider 显示小数:两种方法实现 - 详细教程

原文地址: https://www.cveoy.top/t/topic/qx0i 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录