QInputDialog为getDouble()显示一个逗号而不是一个点

时间:2019-05-08 19:04:09

标签: c++ qt

我用于在Qt QInputDialog::getDouble()中输入十进制数。由于某些原因,默认情况下输出的是点而不是点,尽管在教程中显示的是点。

您能告诉我它是什么吗,或者新版本只能使用逗号吗?点拒绝键盘

double test = QInputDialog::getDouble(this, "Error!", "Write from 0 to 1!", 0.0, -2147483647, 2147483647, 3, &ok );

enter image description here

2 个答案:

答案 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