我正在嘗試將QSlider物件連接到QLineEdit這樣的物件,以使用戶能夠使用滑塊指定值或直接輸入到表單中。這里的目標是當滑塊位置發生變化時,我們更新QLineEdit框中的文本,反之亦然。但是,當我嘗試報告 的值時QSlider->valueChanged(),無論滑塊位置設定在哪里,我都會回傳 1 的值。我做錯了什么?
這是我的 MWE:
QSlider* decay_slider = new QSlider(Qt::Horizontal, this);
decay_slider->setMinimum(1);
decay_slider->setMaximum(11000); // increments of 0.1 years
decay_slider->setTickPosition(QSlider::TicksBothSides);
QLineEdit* le_decay_time = new QLineEdit(this);
// Map slider position signal to LineEdit text update
QSignalMapper* mapper = new QSignalMapper(this);
QObject::connect(mapper,
SIGNAL(mapped(const QString&)),
le_decay_time,
SLOT(setText(const QString&)));
QObject::connect(decay_slider, SIGNAL(valueChanged(int)), mapper, SLOT(map()));
mapper->setMapping(decay_slider,
QString::number(decay_slider->sliderPosition()));
(這是 Qt-5.15,如果重要的話。)
uj5u.com熱心網友回復:
您對初始版本setMapping的值進行硬編碼的呼叫。sliderPosition
好在我們現在有了 lambda,因此您可以將整個第二段替換為:
QObject::connect(decay_slider, &QSlider::valueChanged, le_decay_time,
[=](int value) { le_decay_time->setText(QString::number(value)); });
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/489343.html
上一篇:打開彈出QML時發送引數
