ftpclient-example.html

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

HTML
937
字号
    if ( !name.<a href="qstring.html#isEmpty">isEmpty</a>() &amp;&amp; ok )        localOperator.mkdir( name );}void <a name="f279"></a>FtpMainWindow::slotLocalRemove(){}void <a name="f280"></a>FtpMainWindow::slotRemoteMkDir(){    // create a dir on the remote filesystem (FTP server)    bool ok = FALSE;    <a href="qstring.html">QString</a> name = QInputDialog::<a href="qinputdialog.html#getText">getText</a>( <a href="qobject.html#tr">tr</a>( "Directory Name:" ), QString::null, QLineEdit::Normal, QString::null, &amp;ok, this );    if ( !name.<a href="qstring.html#isEmpty">isEmpty</a>() &amp;&amp; ok )        remoteOperator.mkdir( name );}void <a name="f281"></a>FtpMainWindow::slotRemoteRemove(){}void <a name="f282"></a>FtpMainWindow::slotConnectionStateChanged( int, const <a href="qstring.html">QString</a> &amp;msg ){    <a href="qmainwindow.html#statusBar">statusBar</a>()-&gt;message( msg );}</pre><p> <hr><p> The API of the FtpViewItem and FtpView classes (ftpview.h):<p> <pre>/****************************************************************************** $Id:  qt/ftpview.h   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.*******************************************************************************/#ifndef FTPVIEW_H#define FTPVIEW_H#include &lt;<a href="qlistview-h.html">qlistview.h</a>&gt;#include &lt;<a href="qvaluelist-h.html">qvaluelist.h</a>&gt;#include &lt;<a href="qurlinfo-h.html">qurlinfo.h</a>&gt;class FtpViewItem : public <a href="qlistviewitem.html">QListViewItem</a>{public:    FtpViewItem( <a href="qlistview.html">QListView</a> *parent, const <a href="qurlinfo.html">QUrlInfo</a> &amp;i );    int compare( <a href="qlistviewitem.html">QListViewItem</a> * i, int col, bool ascending ) const;    <a href="qstring.html">QString</a> text( int c ) const;    const <a href="qpixmap.html">QPixmap</a>* pixmap( int c ) const;    <a href="qurlinfo.html">QUrlInfo</a> entryInfo() {        return info;    }private:    <a href="qurlinfo.html">QUrlInfo</a> info;};class FtpView : public <a href="qlistview.html">QListView</a>{    Q_OBJECTpublic:    FtpView( <a href="qwidget.html">QWidget</a> *parent );    <a href="qvaluelist.html">QValueList</a>&lt;QUrlInfo&gt; selectedItems() const;public slots:    void slotInsertEntries( const <a href="qvaluelist.html">QValueList</a>&lt;QUrlInfo&gt; &amp;info );signals:    void itemSelected( const <a href="qurlinfo.html">QUrlInfo</a> &amp;info );private slots:    void slotSelected( <a href="qlistviewitem.html">QListViewItem</a> *item );};#endif</pre><p> <hr><p> Their Implementation (ftpview.cpp):<p> <pre>/****************************************************************************** $Id:  qt/ftpview.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 "ftpview.h"#include &lt;<a href="qpixmap-h.html">qpixmap.h</a>&gt;#include &lt;<a href="qvaluelist-h.html">qvaluelist.h</a>&gt;/* XPM */static const char* closed_xpm[]={    "15 15 6 1",    ". c None",    "b c #ffff00",    "d c #000000",    "* c #999999",    "a c #cccccc",    "c c #ffffff",    "...............",    "..*****........",    ".*ababa*.......",    "*abababa******.",    "*cccccccccccc*d",    "*cbababababab*d",    "*cabababababa*d",    "*cbababababab*d",    "*cabababababa*d",    "*cbababababab*d",    "*cabababababa*d",    "*cbababababab*d",    "**************d",    ".dddddddddddddd",    "..............."};/* XPM */static const char* file_xpm[]={    "13 15 5 1",    ". c #7f7f7f",    "# c None",    "c c #000000",    "b c #bfbfbf",    "a c #ffffff",    "..........###",    ".aaaaaaaab.##",    ".aaaaaaaaba.#",    ".aaaaaaaacccc",    ".aaaaaaaaaabc",    ".aaaaaaaaaabc",    ".aaaaaaaaaabc",    ".aaaaaaaaaabc",    ".aaaaaaaaaabc",    ".aaaaaaaaaabc",    ".aaaaaaaaaabc",    ".aaaaaaaaaabc",    ".aaaaaaaaaabc",    ".bbbbbbbbbbbc",    "ccccccccccccc"};QPixmap *folderIcon = 0;QPixmap *fileIcon = 0;<a name="f287"></a>FtpViewItem::FtpViewItem( <a href="qlistview.html">QListView</a> *parent, const <a href="qurlinfo.html">QUrlInfo</a> &amp;i )<a name="x693"></a>    : <a href="qlistviewitem.html">QListViewItem</a>( parent, i.<a href="qurlinfo.html#name">name</a>() ), info( i ){}<a name="x688"></a>int FtpViewItem::<a href="qlistviewitem.html#compare">compare</a>( <a href="qlistviewitem.html">QListViewItem</a> * i, int col, bool ascending ) const{    FtpViewItem *other = (FtpViewItem*)i;    switch ( col ) {    case 1:<a name="x696"></a>        if ( info.<a href="qvaluelist.html#size">size</a>() == other-&gt;info.<a href="qvaluelist.html#size">size</a>() )            return 0;        else            return info.<a href="qvaluelist.html#size">size</a>() &lt; other-&gt;info.<a href="qvaluelist.html#size">size</a>() ? -1 : 1;    case 2:        if ( info.lastModified() == other-&gt;info.lastModified() )            return 0;        else            return info.lastModified() &lt; other-&gt;info.lastModified() ? -1 : 1;    default:        // use default method for colum 0 and others added in the future        return QListViewItem::compare( i, col, ascending );    };}<a name="x691"></a>QString FtpViewItem::<a href="qlistviewitem.html#text">text</a>( int c ) const{    switch ( c ) {    case 0:        return info.name();    case 1:        return QString::number( info.<a href="qvaluelist.html#size">size</a>() );    case 2:        return info.lastModified().toString();    }    return "????";}<a name="x689"></a>const QPixmap *FtpViewItem::<a href="qlistviewitem.html#pixmap">pixmap</a>( int c ) const{    if ( !folderIcon )        folderIcon = new <a href="qpixmap.html">QPixmap</a>( closed_xpm );    if ( !fileIcon )        fileIcon = new <a href="qpixmap.html">QPixmap</a>( file_xpm );    if ( info.isDir() &amp;&amp; c == 0 )        return folderIcon;    else if ( info.isFile() &amp;&amp; c == 0 )        return fileIcon;    return 0;}<a name="f283"></a>FtpView::FtpView( <a href="qwidget.html">QWidget</a> *parent )    : <a href="qlistview.html">QListView</a>( parent ){    <a href="qlistview.html#addColumn">addColumn</a>( <a href="qobject.html#tr">tr</a>( "Name" ) );    <a href="qlistview.html#addColumn">addColumn</a>( <a href="qobject.html#tr">tr</a>( "Size" ) );    <a href="qlistview.html#addColumn">addColumn</a>( <a href="qobject.html#tr">tr</a>( "Last Modified" ) );    <a href="qlistview.html#setColumnAlignment">setColumnAlignment</a>( 1, Qt::AlignRight );    <a href="qlistview.html#setShowSortIndicator">setShowSortIndicator</a>( TRUE );    <a href="qlistview.html#setAllColumnsShowFocus">setAllColumnsShowFocus</a>( TRUE );    <a href="qlistview.html#setSelectionMode">setSelectionMode</a>( Extended );    <a href="qobject.html#connect">connect</a>( this, SIGNAL( <a href="qlistview.html#doubleClicked">doubleClicked</a>( <a href="qlistviewitem.html">QListViewItem</a> * ) ),             this, SLOT( slotSelected( <a href="qlistviewitem.html">QListViewItem</a> * ) ) );    <a href="qobject.html#connect">connect</a>( this, SIGNAL( <a href="qlistview.html#returnPressed">returnPressed</a>( <a href="qlistviewitem.html">QListViewItem</a> * ) ),             this, SLOT( slotSelected( <a href="qlistviewitem.html">QListViewItem</a> * ) ) );}void <a name="f284"></a>FtpView::slotInsertEntries( const <a href="qvaluelist.html">QValueList</a>&lt;QUrlInfo&gt; &amp;info ){    QValueList&lt;QUrlInfo&gt;::ConstIterator it;<a name="x695"></a><a name="x694"></a>    for( it = info.<a href="qvaluelist.html#begin">begin</a>(); it != info.<a href="qvaluelist.html#end">end</a>(); ++it ) {        if ( (*it).name() != ".." &amp;&amp; (*it).name() != "." &amp;&amp; (*it).name()[ 0 ] == '.' )            continue;        FtpViewItem *item = new FtpViewItem( this, (*it) );        if ( (*it).isDir() )<a name="x690"></a>            item-&gt;<a href="qlistviewitem.html#setSelectable">setSelectable</a>( FALSE );    }}void <a name="f285"></a>FtpView::slotSelected( <a href="qlistviewitem.html">QListViewItem</a> *item ){    if ( !item )        return;    FtpViewItem *i = (FtpViewItem*)item;    if ( i-&gt;entryInfo().isDir() )        emit itemSelected( i-&gt;entryInfo() );}QValueList&lt;QUrlInfo&gt; <a name="f286"></a>FtpView::selectedItems() const{    <a href="qvaluelist.html">QValueList</a>&lt;QUrlInfo&gt; lst;    <a href="qlistviewitemiterator.html">QListViewItemIterator</a> it( (QListView*)this );<a name="x692"></a>    for ( ; it.<a href="qlistviewitemiterator.html#current">current</a>(); ++it ) {        if ( it.<a href="qlistviewitemiterator.html#current">current</a>()-&gt;isSelected() ) {            lst &lt;&lt; ( (FtpViewItem*)it.<a href="qlistviewitemiterator.html#current">current</a>() )-&gt;entryInfo();        }    }    return lst;}</pre><p> <hr><p> Main (main.cpp):<p> <pre>/****************************************************************************** $Id:  qt/main.cpp   3.0.5   edited Nov 6 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 &lt;<a href="qnetwork-h.html">qnetwork.h</a>&gt;#include &lt;<a href="qsplitter-h.html">qsplitter.h</a>&gt;#include "ftpmainwindow.h"int main( int argc, char **argv ){    <a href="qapplication.html">QApplication</a> a( argc, argv );    // call this to register the built-in network protocols, e.g. FTP    // and HTTP.    <a href="qurloperator.html#qInitNetworkProtocols">qInitNetworkProtocols</a>();    FtpMainWindow m;    a.<a href="qapplication.html#setMainWidget">setMainWidget</a>( &amp;m );    <a href="qvaluelist.html">QValueList</a>&lt;int&gt; sizes;    sizes &lt;&lt; 300 &lt;&lt; 70 &lt;&lt; 300;    m.mainSplitter()-&gt;setSizes( sizes );    m.<a href="qwidget.html#resize">resize</a>( 800, 600 );<a name="x699"></a>    m.<a href="qwidget.html#show">show</a>();    return a.<a href="qapplication.html#exec">exec</a>();}</pre><p>See also <a href="network-examples.html">Network 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 + -
显示快捷键?