PDA

View Full Version : سوال: جداکننده عدد؟! مثال : 100،000 یا 100,000



2020s1371
پنج شنبه 20 شهریور 1393, 17:21 عصر
باسلام
توی یک لاین ادیت من یه عدد رو میگیرم ولی میخام موقعی که فرد داره عدد رو وارد میکنه ، هر سه رقم یه جداکننده مثله "," یا "،" داشته باشه
ایده ای که بذهنم میرسه اینه که با یه سیگنال و اسلات موقع زدن عدد هر سه تارو جداکنه ولی بنظرم ایده خوبی نیست ، حتی استفاده از ترد هم فکر نکنم ایده خوبی باشه..

پیشنهاد شما چیه ؟
آیا کیوت تابع پیشفرضی برای اینکار داره؟

returnx
پنج شنبه 20 شهریور 1393, 22:26 عصر
در اسلاتی که سیگنال TextChanged شی LineEdit مورد نظر را هندل می کنید از این کد استفاده کنید :

if (arg1.count()>3)
{
QString temp=arg1;
temp.remove(",");
double d=temp.toDouble();
QLocale i_locale(QLocale::English);
QString str= i_locale.toString(d,'f',0);
ui->lineEdit->setText(str);
}

حامد مصافی
جمعه 21 شهریور 1393, 01:04 صبح
جناب returnx با اجازه کد شما رو به این صورت عوض می‌کنم (البته کد شما درسته، فقط به خاطر اینکه نمی‌دونیم در کامپیوتر مقصد کاراکتر جداکننده چیه)
if (arg1.count()>3){
QString temp=arg1;
QLocale i_locale(QLocale::English);
temp.remove(i_locale.groupSeparator());
double d=temp.toDouble();
QString str= i_locale.toString(d,'f',0);
ui->lineEdit->setText(str);
}


راه‌حل بعدی: از یک QSpinBox استفاده کنید. در صورتی که تنظیمات Locale شما طوری بود که گروه‌بندی اعداد رو نمایش نداد یک کلاس بر مبنای QSpinBox ایجاد کرده و متد textFromValue رو پیاده‌سازی کنید.

omid_kma
جمعه 21 شهریور 1393, 01:12 صبح
میتونی از input mask هم استفاده کنی (http://www.7khatcode.com/3554/%D8%B3%D8%A7%D8%AE%D8%AA-%DB%8C%DA%A9-qlineedit-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%A2%D8%AF%D8%B1%D8%B3-ip).

returnx
جمعه 21 شهریور 1393, 11:45 صبح
در واقع متد number کلاس QString هم یکی از Overload هاش اینکار انجام میده...