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=&quot;yes&amp;quot; depth=&quot;3&amp;quot;]
[[Category:snippets]]<br />[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 5:
== Validator.cpp ==
== Validator.cpp ==


<code><br />#include &lt;QApplication&amp;gt;
<code><br />#include <QApplication>


#include &quot;form.h&amp;quot;
#include "form.h"


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


form.show();<br /> return app.exec&amp;amp;#40;&amp;#41;;<br />}<br /></code>
form.show();<br /> return app.exec();<br />}<br /></code>


== form.h ==
== form.h ==
Line 17: Line 17:
<code><br />#ifndef FORM_H<br />#define FORM_H
<code><br />#ifndef FORM_H<br />#define FORM_H


#include &quot;ui_form.h&amp;quot;
#include "ui_form.h"


class Form : public QWidget, private Ui::Form<br />{<br /> Q_OBJECT
class Form : public QWidget, private Ui::Form<br />{<br /> Q_OBJECT
Line 33: Line 33:
== form.cpp ==
== form.cpp ==


<code><br />#include &lt;QtGui&amp;gt;
<code><br />#include <QtGui>


#include &lt;iostream&amp;gt;
#include <iostream>


#include &quot;form.h&amp;quot;
#include "form.h"


Form::Form(QWidget '''parent)<br /> : QWidget(parent)<br />{<br /> setupUi(this);
Form::Form(QWidget '''parent)<br /> : QWidget(parent)<br />{<br /> setupUi(this);
<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-&gt;lineEdit);<br /> new QIntValidator(0, 255, this);<br /> this-&gt;lineEdit1-&gt;setValidator(validator);<br /> this-&gt;lineEdit2-&gt;setValidator(validator);
<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);


}
}


void Form::on_lineEdit1_textEdited ( const QString &amp; text )<br />{<br /> std::cout &lt;&lt; &quot;text1: &quot; &lt;&lt; text.toStdString() &lt;&lt; std::endl;<br /> std::cout &lt;&lt; &quot;number1: &quot; &lt;&lt; text.toUInt() &lt;&lt; std::endl;<br />}
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_lineEdit2_textEdited ( const QString &amp; text )<br />{<br /> std::cout &lt;&lt; &quot;text2: &quot; &lt;&lt; text.toStdString() &lt;&lt; std::endl;<br />}
void Form::on_lineEdit2_textEdited ( const QString &amp; text )<br />{<br /> std::cout << "text2: " << text.toStdString() << std::endl;<br />}


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


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

Revision as of 14:35, 24 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

<br />#include <QApplication>

#include "form.h"

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

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

form.h

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

#include "ui_form.h"

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

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

public slots:

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

#endif

form.cpp

<br />#include <QtGui>

#include <iostream>

#include "form.h"

Form::Form(QWidget '''parent)<br /> : QWidget(parent)<br />{<br /> setupUi(this);
<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);

}

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_lineEdit2_textEdited ( const QString &amp; text )<br />{<br /> std::cout << "text2: " << text.toStdString() << std::endl;<br />}

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>