Mengatur QLineEdit hanya menerima Integer

Saya ingin berbagi cara bagaimananya membuat QLineEdit hanya menerima masukan berupa angka(int). Ada beberapa cara untuk membuatnya:

MyClass:MyClass(){
....
QLineEdit *edit = new QLineEdit(parent);

//metode 1, menggunakan QIntValidator kekurangannya adalah adanya batasan digit, mampu menerima sampai 10 digit.

edit->setValidator(new QValidator(parent));

//metode 2 dengan QIntValidator membuat jangka tertentu.

edit->setValidator(new QValidator(int nilaiminimum, int nilaimaximum, parent));

//metode 3

edit->setInputMask("999999999999;#");

Angka 9 berarti bisa menerima angka 0-9;
jumlah angka 9 berarti jumlah digit yang bisa diterima;
# adalah karakter topeng yang ditampilkan;
kekurangan metode ini adalah QLineEdit sudah terisi dengan topeng(Mask) dan jumlah digit yang dibatasi.




//metode 4, metode ini tidak ada batasan digit cocok untuk menerima masukkan bilangan yang panjang, contohnya no hp, no kartu identitas, dll
myClass::Myclass(){
...
QLineEdit *edit = new QLineEdit(parent);
connect(edit,SIGNAL(textChanged(QString),this,SLOT(onTextChanged(QString);
...
}


void MyClass::onTextChanged(const QString &_string){

QLineEdit *edit = qobject_cast<QLineEdit*>(sender());

//cek int, lebih enak ini daripada menggunakan QValidator atau inpputmask
QStringList list = _string.split("");

bool ok;
//string pertama dan terakhir adalah string kosong
      for (int i=1;i<list.size()-1;i++){
      list.at(i).toInt(&ok);

if(!ok)

//jika bukan angka langsung dihapus 
edit->backspace();

}
}

Catatan seorang pembelajar, jika ada salah mohon dikoreksi.




0 komentar:

Posting Komentar

Centang "Beri tahu saya" untuk menerima balasan via email