From bd0f3345a938b35ce6a12f6150373b0955b8dd12 Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Sun, 10 Jul 2011 15:24:15 -0500 Subject: Add Qt3 development HEAD version --- doc/html/i18n-example.html | 341 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 341 insertions(+) create mode 100644 doc/html/i18n-example.html (limited to 'doc/html/i18n-example.html') diff --git a/doc/html/i18n-example.html b/doc/html/i18n-example.html new file mode 100644 index 0000000..1a7ac9d --- /dev/null +++ b/doc/html/i18n-example.html @@ -0,0 +1,341 @@ + + + + + +Internationalization + + + + + + + +
+ +Home + | +All Classes + | +Main Classes + | +Annotated + | +Grouped Classes + | +Functions +

Internationalization

+ + +

+This example shows how to internationalize applications. Start it with +

# i18n de

to get a german version and with +

# i18n en

to get the english version. +

Refer also to the internationalization documentation. +


+

Header file: +

/****************************************************************************
+** $Id: qt/mywidget.h   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 Qt.  This example
+** program may be used, distributed and modified without limitation.
+**
+*****************************************************************************/
+
+#ifndef MYWIDGET_H
+#define MYWIDGET_H
+
+#include <qmainwindow.h>
+#include <qstring.h>
+
+class MyWidget : public QMainWindow
+{
+    Q_OBJECT
+
+public:
+    MyWidget( QWidget* parent=0, const char* name = 0 );
+
+signals:
+    void closed();
+
+protected:
+    void closeEvent(QCloseEvent*);
+
+private:
+    static void initChoices(QWidget* parent);
+};
+
+#endif
+
+ +


+

Implementation: +

/****************************************************************************
+** $Id: qt/mywidget.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 Qt.  This example
+** program may be used, distributed and modified without limitation.
+**
+*****************************************************************************/
+
+#include <qbuttongroup.h>
+#include <qradiobutton.h>
+#include <qlabel.h>
+#include <qlistbox.h>
+#include <qcombobox.h>
+#include <qlabel.h>
+#include <qhbox.h>
+#include <qvbox.h>
+#include <qaccel.h>
+#include <qpopupmenu.h>
+#include <qmenubar.h>
+#include <qstatusbar.h>
+#include <qapplication.h>
+
+#include "mywidget.h"
+
+MyWidget::MyWidget( QWidget* parent, const char* name )
+        : QMainWindow( parent, name )
+{
+    QVBox* central = new QVBox(this);
+    central->setMargin( 5 );
+    central->setSpacing( 5 );
+    setCentralWidget(central);
+
+    QPopupMenu* file = new QPopupMenu(this);
+    file->insertItem( tr("E&xit"), qApp, SLOT(quit()),
+            QAccel::stringToKey(tr("Ctrl+Q")) );
+    menuBar()->insertItem( tr("&File"), file );
+
+    setCaption( tr( "Internationalization Example" ) );
+
+    QString l;
+    statusBar()->message( tr("Language: English") );
+
+    ( void )new QLabel( tr( "The Main Window" ), central );
+
+    QButtonGroup* gbox = new QButtonGroup( 1, QGroupBox::Horizontal,
+                                      tr( "View" ), central );
+    (void)new QRadioButton( tr( "Perspective" ), gbox );
+    (void)new QRadioButton( tr( "Isometric" ), gbox );
+    (void)new QRadioButton( tr( "Oblique" ), gbox );
+
+    initChoices(central);
+}
+
+static const char* choices[] = {
+    QT_TRANSLATE_NOOP( "MyWidget", "First" ),
+    QT_TRANSLATE_NOOP( "MyWidget", "Second" ),
+    QT_TRANSLATE_NOOP( "MyWidget", "Third" ),
+    0
+};
+
+void MyWidget::initChoices(QWidget* parent)
+{
+    QListBox* lb = new QListBox( parent );
+    for ( int i = 0; choices[i]; i++ )
+        lb->insertItem( tr( choices[i] ) );
+}
+
+void MyWidget::closeEvent(QCloseEvent* e)
+{
+    QWidget::closeEvent(e);
+    emit closed();
+}
+
+ +


+

Main: +

/****************************************************************************
+** $Id: qt/main.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 Qt.  This example
+** program may be used, distributed and modified without limitation.
+**
+*****************************************************************************/
+
+#include <qapplication.h>
+#include <qtranslator.h>
+#include <qfileinfo.h>
+#include <qmessagebox.h>
+#include <qcheckbox.h>
+#include <qvbox.h>
+#include <qlayout.h>
+#include <qbuttongroup.h>
+#include <qpushbutton.h>
+#include <qsignalmapper.h>
+#include <qtextcodec.h>
+#include <stdlib.h>
+
+#if defined(Q_OS_UNIX)
+#include <unistd.h>
+#endif
+
+#include "mywidget.h"
+
+//#define USE_I18N_FONT
+
+class QVDialog : public QDialog {
+public:
+    QVDialog(QWidget *parent=0, const char *name=0, bool modal=FALSE,
+             WFlags f=0) : QDialog(parent,name,modal,f)
+    {
+        QVBoxLayout* vb = new QVBoxLayout(this,8);
+        vb->setAutoAdd(TRUE);
+        hb = 0;
+        sm = new QSignalMapper(this);
+        connect(sm,SIGNAL(mapped(int)),this,SLOT(done(int)));
+    }
+    void addButtons( const QString& cancel=QString::null,
+                    const QString& ok=QString::null,
+                    const QString& mid1=QString::null,
+                    const QString& mid2=QString::null,
+                    const QString& mid3=QString::null)
+    {
+        addButton(ok.isNull() ? QObject::tr("OK") : ok, 1);
+        if ( !mid1.isNull() ) addButton(mid1,2);
+        if ( !mid2.isNull() ) addButton(mid2,3);
+        if ( !mid3.isNull() ) addButton(mid3,4);
+        addButton(cancel.isNull() ? QObject::tr("Cancel") : cancel, 0);
+    }
+
+    void addButton( const QString& text, int result )
+    {
+        if ( !hb )
+            hb = new QHBox(this);
+        QPushButton *c = new QPushButton(text, hb);
+        sm->setMapping(c,result);
+        connect(c,SIGNAL(clicked()),sm,SLOT(map()));
+    }
+
+private:
+    QSignalMapper *sm;
+    QHBox *hb;
+};
+
+MyWidget* showLang(QString lang)
+{
+
+    static QTranslator *translator = 0;
+
+    qApp->setPalette(QPalette(QColor(220-rand()%64,220-rand()%64,220-rand()%64)));
+
+    lang = "mywidget_" + lang + ".qm";
+    QFileInfo fi( lang );
+
+    if ( !fi.exists() ) {
+        QMessageBox::warning( 0, "File error",
+                              QString("Cannot find translation for language: "+lang+
+                                      "\n(try eg. 'de', 'ko' or 'no')") );
+        return 0;
+    }
+    if ( translator ) {
+        qApp->removeTranslator( translator );
+        delete translator;
+    }
+    translator = new QTranslator( 0 );
+    translator->load( lang, "." );
+    qApp->installTranslator( translator );
+    MyWidget *m = new MyWidget;
+    m->setCaption("Qt Example - i18n - " + m->caption() );
+    return m;
+}
+
+int main( int argc, char** argv )
+{
+    QApplication app( argc, argv );
+
+    const char* qm[]=
+        { "ar", "cs", "de", "el", "en", "eo", "fr", "it", "jp", "ko", "no", "ru", "zh", 0 };
+
+#if defined(Q_OS_UNIX)
+    srand( getpid() << 2 );
+#endif
+
+    QString lang;
+    if ( argc == 2 )
+        lang = argv[1];
+
+    if ( argc != 2 || lang == "all" ) {
+        QVDialog dlg(0,0,TRUE);
+        QCheckBox* qmb[sizeof(qm)/sizeof(qm[0])];
+        int r;
+        if ( lang == "all" ) {
+            r = 2;
+        } else {
+            QButtonGroup *bg = new QButtonGroup(4,Qt::Vertical,"Choose Locales",&dlg);
+            QString loc = QTextCodec::locale();
+            for ( int i=0; qm[i]; i++ ) {
+                qmb[i] = new QCheckBox((const char*)qm[i],bg);
+                qmb[i]->setChecked( loc == qm[i] );
+            }
+            dlg.addButtons("Cancel","OK","All");
+            r = dlg.exec();
+        }
+        if ( r ) {
+            QRect screen = qApp->desktop()->availableGeometry();
+            bool tight = screen.width() < 1024;
+            int x=screen.left()+5;
+            int y=screen.top()+25;
+            for ( int i=0; qm[i]; i++ ) {
+                if ( r == 2 || qmb[i]->isChecked() ) {
+                    MyWidget* w = showLang((const char*)qm[i]);
+
+                    if( w == 0 ) exit( 0 );
+                    QObject::connect(w, SIGNAL(closed()), qApp, SLOT(quit()));
+                    w->setGeometry(x,y,197,356);
+                    w->show();
+                    if ( tight ) {
+                        x += 8;
+                        y += 8;
+                    } else {
+                        x += 205;
+                        if ( x > 1000 ) {
+                            x = 5;
+                            y += 384;
+                        }
+                    }
+                }
+            }
+        } else {
+            exit( 0 );
+        }
+    } else {
+        QString lang = argv[1];
+        QWidget* m = showLang(lang);
+        app.setMainWidget( m );
+        m->setCaption("Qt Example - i18n");
+        m->show();
+    }
+
+#ifdef USE_I18N_FONT
+    memorymanager->savePrerenderedFont(font.handle(),FALSE);
+#endif
+
+    // While we run "all", kill them all
+    return app.exec();
+
+}
+
+ +

See also Examples. + + +


+ +
Copyright © 2007 +TrolltechTrademarks +
Qt 3.3.8
+
+ -- cgit v1.2.1