qwerty-example.html

来自「QT 下载资料仅供参考」· HTML 代码 · 共 510 行 · 第 1/2 页

HTML
510
字号
<a name="x361"></a>    if ( !f.<a href="qfile.html#open">open</a>( <a href="qfile.html#open">IO_ReadOnly</a> ) )        return;<a name="x374"></a>    e-&gt;<a href="qmultilineedit.html#setAutoUpdate">setAutoUpdate</a>( FALSE );    <a href="qtextstream.html">QTextStream</a> t(&amp;f);    if ( code &gt;= Codec )<a name="x400"></a>        t.<a href="qtextstream.html#setCodec">setCodec</a>( codecList-&gt;<a href="qptrlist.html#at">at</a>(code-Codec) );    else if ( code == Uni )<a name="x401"></a>        t.<a href="qtextstream.html#setEncoding">setEncoding</a>( QTextStream::Unicode );    else if ( code == MBug )        t.<a href="qtextstream.html#setEncoding">setEncoding</a>( QTextStream::UnicodeReverse );    else if ( code == Lat1 )        t.<a href="qtextstream.html#setEncoding">setEncoding</a>( QTextStream::Latin1 );    else if ( code == Guess ) {        <a href="qfile.html">QFile</a> f(fileName);        f.<a href="qfile.html#open">open</a>(IO_ReadOnly);        char buffer[256];        int l = 256;<a name="x362"></a>        l=f.<a href="qfile.html#readBlock">readBlock</a>(buffer,l);<a name="x389"></a>        <a href="qtextcodec.html">QTextCodec</a>* codec = QTextCodec::<a href="qtextcodec.html#codecForContent">codecForContent</a>(buffer, l);        if ( codec ) {<a name="x393"></a><a name="x371"></a>            QMessageBox::<a href="qmessagebox.html#information">information</a>(this,"Encoding",QString("Codec: ")+codec-&gt;<a href="qtextcodec.html#name">name</a>());            t.<a href="qtextstream.html#setCodec">setCodec</a>( codec );        }    }<a name="x399"></a><a name="x396"></a>    e-&gt;<a href="qtextedit.html#setText">setText</a>( t.<a href="qtextstream.html#read">read</a>() );<a name="x360"></a>    f.<a href="qfile.html#close">close</a>();    e-&gt;<a href="qmultilineedit.html#setAutoUpdate">setAutoUpdate</a>( TRUE );<a name="x405"></a>    e-&gt;<a href="qwidget.html#repaint">repaint</a>();    <a href="qwidget.html#setCaption">setCaption</a>( fileName );    changed = FALSE;}void <a name="f204"></a>Editor::openAsEncoding( int code ){#ifndef QT_NO_FILEDIALOG    //storing filename (proper save) is left as an exercise...    <a href="qstring.html">QString</a> fn = QFileDialog::<a href="qfiledialog.html#getOpenFileName">getOpenFileName</a>( QString::null, QString::null, this );    if ( !fn.<a href="qstring.html#isEmpty">isEmpty</a>() )        (void) load( fn, code );#endif}bool <a name="f205"></a>Editor::save(){#ifndef QT_NO_FILEDIALOG    //storing filename (proper save) is left as an exercise...<a name="x364"></a>    <a href="qstring.html">QString</a> fn = QFileDialog::<a href="qfiledialog.html#getSaveFileName">getSaveFileName</a>( QString::null, QString::null, this );    if ( !fn.<a href="qstring.html#isEmpty">isEmpty</a>() )        return saveAs( fn );    return FALSE;#endif}void <a name="f206"></a>Editor::saveAsEncoding( int code ){#ifndef QT_NO_FILEDIALOG    //storing filename (proper save) is left as an exercise...    <a href="qstring.html">QString</a> fn = QFileDialog::<a href="qfiledialog.html#getSaveFileName">getSaveFileName</a>( QString::null, QString::null, this );    if ( !fn.<a href="qstring.html#isEmpty">isEmpty</a>() )        (void) saveAs( fn, code );#endif}void <a name="f207"></a>Editor::addEncoding(){#ifndef QT_NO_FILEDIALOG    <a href="qstring.html">QString</a> fn = QFileDialog::<a href="qfiledialog.html#getOpenFileName">getOpenFileName</a>( QString::null, "*.map", this );    if ( !fn.<a href="qstring.html#isEmpty">isEmpty</a>() ) {        <a href="qfile.html">QFile</a> f(fn);        if (f.<a href="qfile.html#open">open</a>(IO_ReadOnly)) {<a name="x392"></a>            if (QTextCodec::<a href="qtextcodec.html#loadCharmap">loadCharmap</a>(&amp;f)) {                rebuildCodecList();            } else {<a name="x372"></a>                QMessageBox::<a href="qmessagebox.html#warning">warning</a>(0,"Charmap error",                    "The file did not contain a valid charmap.\n\n"                    "A charmap file should look like this:\n"                       "  &lt;code_set_name&gt; thename\n"                       "  &lt;escape_char&gt; /\n"                       "  % alias thealias\n"                       "  CHARMAP\n"                       "  &lt;tokenname&gt; /x12 &lt;U3456&gt;\n"                       "  &lt;tokenname&gt; /xAB/x12 &lt;U0023&gt;\n"                       "  ...\n"                       "  END CHARMAP\n"                );            }        }    }#endif}bool <a name="f208"></a>Editor::saveAs( const <a href="qstring.html">QString</a>&amp; fileName, int code ){    <a href="qfile.html">QFile</a> f( fileName );    if ( no_writing || !f.<a href="qfile.html#open">open</a>( <a href="qfile.html#open">IO_WriteOnly</a> ) ) {        QMessageBox::<a href="qmessagebox.html#warning">warning</a>(this,"I/O Error",                    QString("The file could not be opened.\n\n")                        +fileName);        return FALSE;    }    <a href="qtextstream.html">QTextStream</a> t(&amp;f);    if ( code &gt;= Codec )        t.<a href="qtextstream.html#setCodec">setCodec</a>( codecList-&gt;<a href="qptrlist.html#at">at</a>(code-Codec) );    else if ( code == Uni )        t.<a href="qtextstream.html#setEncoding">setEncoding</a>( QTextStream::Unicode );    else if ( code == MBug )        t.<a href="qtextstream.html#setEncoding">setEncoding</a>( QTextStream::UnicodeReverse );    else if ( code == Lat1 )        t.<a href="qtextstream.html#setEncoding">setEncoding</a>( QTextStream::Latin1 );<a name="x397"></a>    t &lt;&lt; e-&gt;<a href="qtextedit.html#text">text</a>();    f.<a href="qfile.html#close">close</a>();    <a href="qwidget.html#setCaption">setCaption</a>( fileName );    changed = FALSE;    return TRUE;}void <a name="f209"></a>Editor::print(){#ifndef QT_NO_PRINTER    if ( printer.setup(this) ) {                // opens printer dialog        printer.setFullPage(TRUE);              // we'll set our own margins        <a href="qpainter.html">QPainter</a> p;        p.<a href="qpainter.html#begin">begin</a>( &amp;printer );                    // paint on printer        p.<a href="qpainter.html#setFont">setFont</a>( e-&gt;<a href="qtextedit.html#font">font</a>() );<a name="x382"></a>        <a href="qfontmetrics.html">QFontMetrics</a> fm = p.<a href="qpainter.html#fontMetrics">fontMetrics</a>();        <a href="qpaintdevicemetrics.html">QPaintDeviceMetrics</a> metrics( &amp;printer ); // need width/height                                                 // of printer surface<a name="x377"></a>        const int MARGIN = metrics.<a href="qpaintdevicemetrics.html#logicalDpiX">logicalDpiX</a>() / 2; // half-inch margin        int yPos        = MARGIN;               // y position for each line<a name="x373"></a>        for( int i = 0 ; i &lt; e-&gt;<a href="qmultilineedit.html#numLines">numLines</a>() ; i++ ) {            if ( printer.aborted() )                break;<a name="x376"></a><a name="x367"></a>            if ( yPos + fm.<a href="qfontmetrics.html#lineSpacing">lineSpacing</a>() &gt; metrics.<a href="qpaintdevicemetrics.html#height">height</a>() - MARGIN ) {                // no more room on this page                if ( !printer.newPage() )          // start new page                    break;                           // some error                yPos = MARGIN;                   // back to top of page            }<a name="x378"></a>            p.<a href="qpainter.html#drawText">drawText</a>( MARGIN, yPos, metrics.<a href="qpaintdevicemetrics.html#width">width</a>() - 2*MARGIN,<a name="x375"></a>                        fm.<a href="qfontmetrics.html#lineSpacing">lineSpacing</a>(), ExpandTabs, e-&gt;<a href="qmultilineedit.html#textLine">textLine</a>( i ) );            yPos += fm.<a href="qfontmetrics.html#lineSpacing">lineSpacing</a>();        }        p.<a href="qpainter.html#end">end</a>();                                // send job to printer    }#endif}void Editor::<a href="qwidget.html#resizeEvent">resizeEvent</a>( <a href="qresizeevent.html">QResizeEvent</a> * ){    if ( e &amp;&amp; m )        e-&gt;<a href="qwidget.html#setGeometry">setGeometry</a>( 0, m-&gt;<a href="qwidget.html#height">height</a>(), width(), height() - m-&gt;<a href="qwidget.html#height">height</a>() );}<a name="x402"></a>void Editor::<a href="qwidget.html#closeEvent">closeEvent</a>( <a href="qcloseevent.html">QCloseEvent</a> *event ){<a name="x358"></a>    event-&gt;<a href="qcloseevent.html#accept">accept</a>();    if ( changed ) { // the text has been changed        switch ( QMessageBox::<a href="qmessagebox.html#warning">warning</a>( this, "Qwerty",                                        "Save changes to Document?",                                        <a href="qobject.html#tr">tr</a>("&amp;Yes"),                                        <a href="qobject.html#tr">tr</a>("&amp;No"),                                        <a href="qobject.html#tr">tr</a>("Cancel"),                                        0, 2) ) {        case 0: // yes            if ( save() )                event-&gt;<a href="qcloseevent.html#accept">accept</a>();            else<a name="x359"></a>                event-&gt;<a href="qcloseevent.html#ignore">ignore</a>();            break;        case 1: // no            event-&gt;<a href="qcloseevent.html#accept">accept</a>();            break;        default: // cancel            event-&gt;<a href="qcloseevent.html#ignore">ignore</a>();            break;        }    }}void <a name="f210"></a>Editor::toUpper(){    e-&gt;<a href="qtextedit.html#setText">setText</a>(e-&gt;<a href="qtextedit.html#text">text</a>().upper());}void <a name="f211"></a>Editor::toLower(){    e-&gt;<a href="qtextedit.html#setText">setText</a>(e-&gt;<a href="qtextedit.html#text">text</a>().lower());}void <a name="f212"></a>Editor::textChanged(){    changed = TRUE;}</pre><p> <hr><p> Main:<p> <pre>/****************************************************************************** $Id:  qt/main.cpp   3.0.5   edited Oct 12 2001 $**** Copyright (C) 1992-2000 Trolltech AS.  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 &lt;<a href="qapplication-h.html">qapplication.h</a>&gt;#include "qwerty.h"int main( int argc, char **argv ){    <a href="qapplication.html">QApplication</a> a( argc, argv );<a name="x412"></a>    bool isSmall =  qApp-&gt;<a href="qapplication.html#desktop">desktop</a>()-&gt;size().width() &lt; 450                  || qApp-&gt;<a href="qapplication.html#desktop">desktop</a>()-&gt;size().height() &lt; 450;    int i;    for ( i= argc &lt;= 1 ? 0 : 1; i&lt;argc; i++ ) {        Editor *e = new Editor;        e-&gt;<a href="qwidget.html#setCaption">setCaption</a>("Qt Example - QWERTY");        if ( i &gt; 0 )            e-&gt;load( argv[i] );        if ( isSmall ) {<a name="x420"></a>            e-&gt;<a href="qwidget.html#showMaximized">showMaximized</a>();        } else {            e-&gt;<a href="qwidget.html#resize">resize</a>( 400, 400 );            e-&gt;<a href="qwidget.html#show">show</a>();        }    }<a name="x415"></a><a name="x414"></a>    a.<a href="qobject.html#connect">connect</a>( &amp;a, SIGNAL(<a href="qapplication.html#lastWindowClosed">lastWindowClosed</a>()), &amp;a, SLOT(<a href="qapplication.html#quit">quit</a>()) );    return a.<a href="qapplication.html#exec">exec</a>();}</pre><p>See also <a href="examples.html">Examples</a>.<!-- eof --><p><address><hr><div align=center><table width=100% cellspacing=0 border=0><tr><td>Copyright &copy; 2002 <a href="http://www.trolltech.com">Trolltech</a><td><a href="http://www.trolltech.com/trademarks.html">Trademarks</a><td align=right><div align=right>Qt version 3.0.5</div></table></div></address></body></html>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?