Home | All Classes | Main Classes | Annotated | Grouped Classes | Functions |

# Rot13

This example lets you enter a text into a mulitilineedit widget. It will be displayed in the edit widget to the right transformed using the rot13 algorithm.

Header file:

    /****************************************************************************
    ** $Id: qt/rot13.h   3.3.8   edited Jan 11 14:46 $
    **
    ** Definition of something or other
    **
    ** Created : 979899
    **
    ** Copyright (C) 1997-2007 Trolltech ASA.  All rights reserved.
    **
    ** This file is part of an example program for TQt.  This example
    ** program may be used, distributed and modified without limitation.
    **
    *****************************************************************************/

    #ifndef ROT13_H
    #define ROT13_H

    #include <tqwidget.h>

    class TQMultiLineEdit;

    class Rot13: public TQWidget {
        TQ_OBJECT
    public:
        Rot13();

        TQString rot13( const TQString & ) const;

    private slots:
        void changeLeft();
        void changeRight();

    private:
        TQMultiLineEdit * left, * right;
    };

    #endif

Implementation:

    /****************************************************************************
    ** $Id: qt/rot13.cpp   3.3.8   edited Jan 11 14:37 $
    **
    ** Copyright (C) 1992-2007 Trolltech ASA.  All rights reserved.
    **
    ** This file is part of an example program for TQt.  This example
    ** program may be used, distributed and modified without limitation.
    **
    *****************************************************************************/

    #include "rot13.h"

    #include <tqmultilineedit.h>
    #include <tqpushbutton.h>
    #include <tqapplication.h>
    #include <tqlayout.h>

    Rot13::Rot13()
    {
        left = new TQMultiLineEdit( this, "left" );
        right = new TQMultiLineEdit( this, "right" );
        connect( left, TQ_SIGNAL(textChanged()), this, TQ_SLOT(changeRight()) );
        connect( right, TQ_SIGNAL(textChanged()), this, TQ_SLOT(changeLeft()) );

        TQPushButton * quit = new TQPushButton( "&Quit", this );
        quit->setFocusPolicy( NoFocus );
        connect( quit, TQ_SIGNAL(clicked()), tqApp, TQ_SLOT(quit()) );

        TQGridLayout * l = new TQGridLayout( this, 2, 2, 5 );
        l->addWidget( left, 0, 0 );
        l->addWidget( right, 0, 1 );
        l->addWidget( quit, 1, 1, AlignRight );

        left->setFocus();
    }

    void Rot13::changeLeft()
    {
        left->blockSignals( true );
        left->setText( rot13( right->text() ) );
        left->blockSignals( false );
    }

    void Rot13::changeRight()
    {
        right->blockSignals( true );
        right->setText( rot13( left->text() ) );
        right->blockSignals( false );
    }

    TQString Rot13::rot13( const TQString & input ) const
    {
        TQString r = input;
        int i = r.length();
        while( i-- ) {
            if ( r[i] >= TQChar('A') && r[i] <= TQChar('M') ||
                 r[i] >= TQChar('a') && r[i] <= TQChar('m') )
                r[i] = (char)((int)TQChar(r[i]) + 13);
            else if  ( r[i] >= TQChar('N') && r[i] <= TQChar('Z') ||
                       r[i] >= TQChar('n') && r[i] <= TQChar('z') )
                r[i] = (char)((int)TQChar(r[i]) - 13);
        }
        return r;
    }

    int main( int argc, char ** argv )
    {
        TQApplication a( argc, argv );
        Rot13 r;
        r.resize( 400, 400 );
        a.setMainWidget( &r );
        r.setCaption("TQt Example - ROT13");
        r.show();
        return a.exec();
    }

See also Examples.