我用于在Qt QInputDialog::getDouble()
中输入十进制数。由于某些原因,默认情况下输出的是点而不是点,尽管在教程中显示的是点。
您能告诉我它是什么吗,或者新版本只能使用逗号吗?点拒绝键盘
double test = QInputDialog::getDouble(this, "Error!", "Write from 0 to 1!", 0.0, -2147483647, 2147483647, 3, &ok );
答案 0 :(得分:1)
这取决于当前系统的QLocale
设置。如果您使用QInputDialog
的实例而不是静态方法,则可以自己设置QLocale
的设置(无需更改整个应用程序的值)。
例如:
QInputDialog* dialog = new QInputDialog();
dialog->setInputMode(QInputDialog::DoubleInput);
dialog->setLocale(QLocale(QLocale::English, QLocale::UnitedKingdom)); // Will use a dot
dialog->exec();
qDebug() << dialog->doubleValue();
dialog->setLocale(QLocale(QLocale::French, QLocale::France)); // Will use a comma
dialog->exec();
qDebug() << dialog->doubleValue();
请参阅Qt documentation以配置QInputDialog
(范围,标题等)
答案 1 :(得分:0)
PyQt 也有同样的问题。无法指定 setLocale。所以我必须从 QInputDialog() 中定义它
#value, okPressed = QInputDialog.getDouble(self, "Get scale value","Value:", self.scaleValue, 0, 100, 1)
# --> get comma instead of dot
dialog = QInputDialog()
dialog.setInputMode(QInputDialog.DoubleInput)
dialog.setLocale(QLocale(QLocale.English, QLocale.UnitedStates))
dialog.setLabelText("Value : ")
dialog.setDoubleMinimum(0)
dialog.setDoubleMaximum(100)
dialog.setDoubleStep(1)
dialog.setDoubleDecimals(2)
dialog.setDoubleValue(self.scaleValue)
dialog.setWindowTitle("Get scale value")
okPressed = dialog.exec_()
if okPressed:
self.scaleValue = dialog.doubleValue()
else:
return