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

Reply via email to