【发布时间】:2014-09-10 10:40:42
【问题描述】:
我正在设计一个 C++/Qt 应用程序。我在法语 Windows 环境中使用法语键盘。
当我尝试在 QDoubleSpinBox 控件中键入十进制数字时,按点数字键盘按钮什么也不做......我希望它插入一个小数分隔符!
这是一个非常简单的 Qt 程序来隔离问题:
main.cpp:
#include <QApplication>
#include <QVBoxLayout>
#include <QLabel>
#include <QSpinBox>
#include <QDialog>
class Dialog : public QDialog
{
public:
Dialog()
{
QVBoxLayout* layout = new QVBoxLayout( this );
layout->addWidget( new QLabel( QLocale().toString( 3.14 ), this ) );
layout->addWidget( new QDoubleSpinBox( this ) );
}
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Dialog w;
w.show();
return a.exec();
}
我在一台法国 PC 上使用 Visual Studio 2010 和 5.2.1 编译它。
对话框打开时:
然后:
- QLabel 显示“3,14”,这意味着法语 QLocale 已正确使用(否则,它将显示 3.14,英语默认 stype)。好的
- QDoubleSpinBox 显示“0,00”。好的
- 我可以使用“,”标准键盘键在微调框中键入十进制值。好的
- 我无法使用“.”在微调框中键入十进制值标准键盘键。好的
- 但是,当我在数字法语键盘上按点键时,什么也没有发生!这应该输入小数分隔符,无论使用什么语言环境设置!
我正在寻找一个全局解决方案(在 QApplication 级别),而不是在 QSpinBox 级别,因为我的原始项目中有很多。
【问题讨论】:
-
纠正我,如果我错了 - 你想按'。'按钮,并期望它会打印“,”,因为您的语言环境使用“,”作为小数分隔符?
-
没错。就像 Microsoft Excel 一样:如果我按“1”“。”和“2”从键盘,是写“1,2”在选定的单元格。