On Monday 16 July 2012 09:14:31 Constantin Makshin wrote:
> Functions you are interested in are (line numbers are taken from the code
> in the Git repository):
> src/gui/widgets/qlineedit.cpp, line 383 (QLineEdit::setText)
> src/gui/widgets/qlinecontrol_p.h, line 213 (QLineControl::setText)
> src/gui/widgets/qlinecontrol.cpp, line 676 (QLineControl::internalSetText)
> src/gui/widgets/qlinecontrol.cpp, line 620 (QLineControl::finishChange)
>
> Nothing looks wrong there...
Yeah, I also recall it was working correctly when I used it last time...
However, the example acts "wrongly", but it somehow only happens when the
validator is set. The attached example (w/o the validator) works correctly.
HTH, René
#include <QtGui>
class QUppercaseValidator : public QValidator
{
public:
QUppercaseValidator(QObject *parent) : QValidator(parent) {}
virtual State validate(QString &s, int &) const { fixup(s);
return Acceptable; }
virtual void fixup(QString &s) const { s = s.toUpper(); }
};
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QWidget w;
QLineEdit *edit1 = new QLineEdit;
QLineEdit *edit2 = new QLineEdit;
QLabel *label = new QLabel;
//edit2->setValidator(new QUppercaseValidator(edit2));
QObject::connect(edit1, SIGNAL(textChanged(const QString &)), edit2,
SLOT(setText(const QString &)));
QObject::connect(edit2, SIGNAL(textEdited(const QString &)), label,
SLOT(setText(const QString &)));
QVBoxLayout *layout = new QVBoxLayout;
layout->addWidget(edit1);
layout->addWidget(edit2);
layout->addWidget(label);
w.setLayout(layout);
w.show();
return a.exec();
}
_______________________________________________
Interest mailing list
Interest@qt-project.org
http://lists.qt-project.org/mailman/listinfo/interest