QIntValidator: Difference between revisions

From Qt Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
[[Category:snippets]]<br />[toc align_right="yes" depth="3"]
[[Category:snippets]]
[toc align_right="yes" depth="3"]


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.
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.
Line 5: Line 6:
== Validator.cpp ==
== Validator.cpp ==


<code><br />#include <QApplication>
<code>
#include <QApplication>


#include "form.h"
#include "form.h"


int main(int argc, char *argv[])<br />{<br /> QApplication app(argc, argv);<br /> Form form;
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Form form;


form.show();<br /> return app.exec();<br />}<br /></code>
form.show();
return app.exec();
}
</code>


== form.h ==
== form.h ==


<code><br />#ifndef FORM_H<br />#define FORM_H
<code>
#ifndef FORM_H
#define FORM_H


#include "ui_form.h"
#include "ui_form.h"


class Form : public QWidget, private Ui::Form<br />{<br /> Q_OBJECT
class Form : public QWidget, private Ui::Form
{
Q_OBJECT


public:<br /> Form(QWidget *parent = 0);
public:
Form(QWidget *parent = 0);


public slots:
public slots:


void on_lineEdit1_textEdited ( const QString &amp; text );<br /> void on_lineEdit2_textEdited ( const QString &amp; text );<br />};
void on_lineEdit1_textEdited ( const QString &amp; text );
void on_lineEdit2_textEdited ( const QString &amp; text );
};


#endif
#endif
Line 33: Line 48:
== form.cpp ==
== form.cpp ==


<code><br />#include <QtGui>
<code>
#include <QtGui>


#include <iostream>
#include <iostream>
Line 39: Line 55:
#include "form.h"
#include "form.h"


Form::Form(QWidget '''parent)<br /> : QWidget(parent)<br />{<br /> setupUi(this);
Form::Form(QWidget '''parent)
<br /> // Limit input to valid values between 0 and 255. Either parent ('this' or 'lineEdit') works, I'm not sure what difference it makes.<br /> QIntValidator''' validator =<br /> //new QIntValidator(0, 255, this->lineEdit);<br /> new QIntValidator(0, 255, this);<br /> this->lineEdit1->setValidator(validator);<br /> this->lineEdit2->setValidator(validator);
: 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 &amp; text )<br />{<br /> std::cout << "text1: " << text.toStdString() << std::endl;<br /> std::cout << "number1: " << text.toUInt() << std::endl;<br />}
void Form::on_lineEdit1_textEdited ( const QString &amp; text )
{
std::cout << "text1: " << text.toStdString() << std::endl;
std::cout << "number1: " << text.toUInt() << std::endl;
}


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


</code>
</code>
Line 52: Line 84:
== form.ui ==
== form.ui ==


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

Revision as of 11:39, 25 February 2015

[toc align_right="yes" depth="3"]

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 &amp; text );
 void on_lineEdit2_textEdited ( const QString &amp; 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 &amp; text )
{
 std::cout << "text1: " << text.toStdString() << std::endl;
 std::cout << "number1: " << text.toUInt() << std::endl;
}

void Form::on_lineEdit2_textEdited ( const QString &amp; 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>