QIntValidator

From Qt Wiki
Revision as of 22:03, 28 June 2015 by Wieland (talk | contribs) (Cleanup)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

En Ar Bg De El Es Fa Fi Fr Hi Hu It Ja Kn Ko Ms Nl Pl Pt Ru Sq Th Tr Uk Zh

You can prevent invalid text from being entered into a lineEdit using a validator. This example demonstrates QIntValidator, which only allows integers to be entered into the lineEdit.

Validator.cpp

#include <QApplication>

#include "form.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    Form form;
    form.show();
    return app.exec();
}

form.h

#ifndef FORM_H
#define FORM_H

#include "ui_form.h"

class Form : public QWidget, private Ui::Form
{
    Q_OBJECT
public:
    Form(QWidget* parent=0);
public slots:
    void on_lineEdit1_textEdited( const QString & text );
    void on_lineEdit2_textEdited( const QString & text );
};

#endif

form.cpp

#include <QtGui>
#include <iostream>

#include "form.h"

Form::Form(QWidget *parent)
    : QWidget(parent)
{
    setupUi(this);
    // Limit input to valid values between 0 and 255. Either parent ('this' or 'lineEdit') works, I'm not sure what difference it makes.
    QIntValidator* validator =
    //new QIntValidator(0, 255, this->lineEdit);
        new QIntValidator(0, 255, this);
    this->lineEdit1->setValidator(validator);
    this->lineEdit2->setValidator(validator);
}

void Form::on_lineEdit1_textEdited(const QString& text)
{
    std::cout << "text1: " << text.toStdString() << std::endl;
    std::cout << "number1: " << text.toUInt() << std::endl;
}

void Form::on_lineEdit2_textEdited(const QString& text)
{
    std::cout << "text2: " << text.toStdString() << std::endl;
}

form.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>Form</class>
 <widget class="QWidget" name="Form">
 <property name="geometry">
 <rect>
 <x>0</x>
 <y>0</y>
 <width>400</width>
 <height>300</height>
 </rect>
 </property>
 <property name="windowTitle">
 <string>Form</string>
 </property>
 <widget class="QLineEdit" name="lineEdit1">
 <property name="geometry">
 <rect>
 <x>250</x>
 <y>90</y>
 <width>113</width>
 <height>27</height>
 </rect>
 </property>
 </widget>
 <widget class="QLineEdit" name="lineEdit2">
 <property name="geometry">
 <rect>
 <x>250</x>
 <y>170</y>
 <width>113</width>
 <height>27</height>
 </rect>
 </property>
 </widget>
 </widget>
 <resources/>
 <connections/>
</ui>