📄 fileiconview-main-cpp.html
字号:
iconFileSmall = new <a href="qpixmap.html">QPixmap</a>( iconpix ); iconpix = QPixmap( link_icon ); iconLinkLarge = new <a href="qpixmap.html">QPixmap</a>( link_icon ); iconpix = iconpix.<a href="qpixmap.html#ff5fcf">xForm</a>( m ); iconLinkSmall = new <a href="qpixmap.html">QPixmap</a>( iconpix ); } vm = Large; setGridX( 75 ); setResizeMode( Adjust ); setWordWrapIconText( FALSE ); connect( this, SIGNAL( doubleClicked( <a href="qiconviewitem.html">QIconViewItem</a> * ) ), this, SLOT( itemDoubleClicked( <a href="qiconviewitem.html">QIconViewItem</a> * ) ) ); connect( this, SIGNAL( returnPressed( <a href="qiconviewitem.html">QIconViewItem</a> * ) ), this, SLOT( itemDoubleClicked( <a href="qiconviewitem.html">QIconViewItem</a> * ) ) ); connect( this, SIGNAL( <a href=#181>dropped</a>( <a href="qdropevent.html">QDropEvent</a> *, const QValueList<<a href="qicondragitem.html">QIconDragItem</a>> & ) ), this, SLOT( slotDropped( <a href="qdropevent.html">QDropEvent</a> *, const QValueList<<a href="qicondragitem.html">QIconDragItem</a>> & ) ) ); connect( this, SIGNAL( rightButtonPressed( <a href="qiconviewitem.html">QIconViewItem</a> *, const QPoint & ) ), this, SLOT( slotRightPressed( <a href="qiconviewitem.html">QIconViewItem</a> * ) ) ); setHScrollBarMode( AlwaysOff ); setVScrollBarMode( Auto ); setAutoArrange( TRUE ); setSorting( TRUE ); openItem = 0;}void <a name="184"></a>QtFileIconView::openFolder(){ if ( !openItem ) return; if ( openItem->type() != QtFileIconViewItem::Dir || openItem->type() == QtFileIconViewItem::Dir && !QDir( openItem->itemFileName ).isReadable() ) return; openItem->timer.stop(); <a href=#186>setDirectory</a>( openItem->itemFileName );}void <a name="186"></a>QtFileIconView::setDirectory( const QString &dir ){ viewDir = QDir( dir ); <a href=#189>readDir</a>( viewDir );}void <a name="186"></a>QtFileIconView::setDirectory( const QDir &dir ){ viewDir = dir; <a href=#189>readDir</a>( viewDir );}void <a name="187"></a>QtFileIconView::newDirectory(){ <a href="qiconview.html#7b3f0b">setAutoArrange</a>( FALSE ); <a href="qiconview.html#31b5ce">selectAll</a>( FALSE ); if ( viewDir.mkdir( <a href="qstring.html">QString</a>( "New Folder %1" ).arg( ++newFolderNum ) ) ) { <a href="qfileinfo.html">QFileInfo</a> *fi = new <a href="qfileinfo.html">QFileInfo</a>( viewDir, QString( "New Folder %1" ).arg( newFolderNum ) ); QtFileIconViewItem *item = new QtFileIconViewItem( this, new <a href="qfileinfo.html">QFileInfo</a>( *fi ) ); item-><a href="qiconviewitem.html#4782f9">setKey</a>( <a href="qstring.html">QString</a>( "000000%1" ).arg( fi-><a href="qfileinfo.html#a9e3d2">fileName</a>() ) ); delete fi; <a href="qscrollview.html#3d2c3b">repaintContents</a>( contentsX(), <a href="qscrollview.html#459550">contentsY</a>(), <a href="qscrollview.html#96e59b">contentsWidth</a>(), <a href="qscrollview.html#b016d7">contentsHeight</a>(), FALSE ); <a href="qiconview.html#76c81f">ensureItemVisible</a>( item ); item-><a href="qiconviewitem.html#44f4f6">setSelected</a>( TRUE, TRUE ); <a href="qiconview.html#b30724">setCurrentItem</a>( item ); <a href="qiconview.html#65c0ac">repaintItem</a>( item ); qApp->processEvents(); item-><a href="qiconviewitem.html#c6b054">rename</a>(); } <a href="qiconview.html#7b3f0b">setAutoArrange</a>( TRUE );}<a href="qdir.html">QDir</a> <a name="188"></a>QtFileIconView::currentDir(){ return viewDir;}static bool isRoot( const QString &s ){#if defined(_OS_UNIX_) if ( s == "/" ) return TRUE;#elif defined(_OS_WIN32_) <a href="qstring.html">QString</a> p = s; if ( p.<a href="qstring.html#0ecbda">length</a>() == 3 && p.<a href="qstring.html#98b160">right</a>( 2 ) == ":/" ) return TRUE; if ( p[ 0 ] == '/' && p[ 1 ] == '/' ) { int slashes = p.<a href="qstring.html#3c8233">contains</a>( '/' ); if ( slashes <= 3 ) return TRUE; if ( slashes == 4 && p[ (int)p.<a href="qstring.html#0ecbda">length</a>() - 1 ] == '/' ) return TRUE; }#endif return FALSE;}void <a name="189"></a>QtFileIconView::readDir( const QDir &dir ){ if ( !dir.<a href="qdir.html#6dc6f9">isReadable</a>() ) return; if ( isRoot( dir.<a href="qdir.html#bf5f8c">absPath</a>() ) ) emit disableUp(); else emit enableUp(); <a href="qiconview.html#f84d65">clear</a>(); emit directoryChanged( dir.<a href="qdir.html#bf5f8c">absPath</a>() ); const QFileInfoList *filist = dir.<a href="qdir.html#789222">entryInfoList</a>( QDir::DefaultFilter, QDir::DirsFirst | QDir::Name ); emit startReadDir( filist->count() ); QFileInfoListIterator it( *filist ); <a href="qfileinfo.html">QFileInfo</a> *fi; bool allowRename = FALSE, allowRenameSet = FALSE; while ( ( fi = it.current() ) != 0 ) { ++it; if ( fi && fi-><a href="qfileinfo.html#a9e3d2">fileName</a>() == ".." && ( fi-><a href="qfileinfo.html#3efc66">dirPath</a>() == "/" || fi-><a href="qfileinfo.html#3efc66">dirPath</a>().isEmpty() ) ) continue; emit readNextDir(); QtFileIconViewItem *item = new QtFileIconViewItem( this, new <a href="qfileinfo.html">QFileInfo</a>( *fi ) ); if ( fi-><a href="qfileinfo.html#70e102">isDir</a>() ) item-><a href="qiconviewitem.html#4782f9">setKey</a>( <a href="qstring.html">QString</a>( "000000%1" ).arg( fi-><a href="qfileinfo.html#a9e3d2">fileName</a>() ) ); else item-><a href="qiconviewitem.html#4782f9">setKey</a>( fi-><a href="qfileinfo.html#a9e3d2">fileName</a>() ); if ( !allowRenameSet ) { if ( !QFileInfo( fi-><a href="qfileinfo.html#b8684f">absFilePath</a>() ).isWritable() || item-><a href="qiconviewitem.html#3715d1">text</a>() == "." || item-><a href="qiconviewitem.html#3715d1">text</a>() == ".." ) allowRename = FALSE; else allowRename = TRUE; if ( item-><a href="qiconviewitem.html#3715d1">text</a>() == "." || item-><a href="qiconviewitem.html#3715d1">text</a>() == ".." ) allowRenameSet = FALSE; else allowRenameSet = TRUE; } item-><a href="qiconviewitem.html#2eb423">setRenameEnabled</a>( allowRename ); } if ( !QFileInfo( dir.<a href="qdir.html#bf5f8c">absPath</a>() ).isWritable() ) emit disableMkdir(); else emit enableMkdir(); emit readDirDone();}void <a name="190"></a>QtFileIconView::itemDoubleClicked( <a href="qiconviewitem.html">QIconViewItem</a> *i ){ QtFileIconViewItem *item = ( QtFileIconViewItem* )i; if ( item->type() == QtFileIconViewItem::Dir ) { viewDir = QDir( item->filename() ); <a href=#189>readDir</a>( viewDir ); } else if ( item->type() == QtFileIconViewItem::Link && <a href="qfileinfo.html">QFileInfo</a>( <a href="qfileinfo.html">QFileInfo</a>( item->filename() ).readLink() ).isDir() ) { viewDir = QDir( <a href="qfileinfo.html">QFileInfo</a>( item->filename() ).readLink() ); <a href=#189>readDir</a>( viewDir ); }}<a href="qdragobject.html">QDragObject</a> *<a name="191"></a>QtFileIconView::dragObject(){ if ( !currentItem() ) return 0; <a href="qpoint.html">QPoint</a> orig = viewportToContents( <a href="qscrollview.html#26f2bf">viewport</a>()->mapFromGlobal( <a href="qcursor.html#5bce2b">QCursor::pos</a>() ) ); QtFileIconDrag *drag = new QtFileIconDrag( <a href="qscrollview.html#26f2bf">viewport</a>() ); drag-><a href="qdragobject.html#a83907">setPixmap</a>( *currentItem()->pixmap(), <a href="qpoint.html">QPoint</a>( <a href="qiconview.html#b2a5c7">currentItem</a>()->pixmapRect().width() / 2, <a href="qiconview.html#b2a5c7">currentItem</a>()->pixmapRect().height() / 2 ) ); for ( QtFileIconViewItem *item = (QtFileIconViewItem*)firstItem(); item; item = (QtFileIconViewItem*)item-><a href="qiconviewitem.html#005b99">nextItem</a>() ) { if ( item-><a href="qiconviewitem.html#8fd9c9">isSelected</a>() ) { <a href="qicondragitem.html">QIconDragItem</a> id; id.<a href="qicondragitem.html#89eea4">setData</a>( <a href="qcstring.html">QCString</a>( item->filename() ) ); drag-><a href="qicondrag.html#e2f3cc">append</a>( id, <a href="qrect.html">QRect</a>( item-><a href="qiconviewitem.html#a9db94">pixmapRect</a>( FALSE ).x() - orig.<a href="qpoint.html#7e96b2">x</a>(), item-><a href="qiconviewitem.html#a9db94">pixmapRect</a>( FALSE ).y() - orig.<a href="qpoint.html#e48824">y</a>(), item-><a href="qiconviewitem.html#a9db94">pixmapRect</a>().width(), item-><a href="qiconviewitem.html#a9db94">pixmapRect</a>().height() ), <a href="qrect.html">QRect</a>( item-><a href="qiconviewitem.html#09025a">textRect</a>( FALSE ).x() - orig.<a href="qpoint.html#7e96b2">x</a>(), item-><a href="qiconviewitem.html#09025a">textRect</a>( FALSE ).y() - orig.<a href="qpoint.html#e48824">y</a>(), item-><a href="qiconviewitem.html#09025a">textRect</a>().width(), item-><a href="qiconviewitem.html#09025a">textRect</a>().height() ), <a href="qstring.html">QString</a>( item->filename() ) ); } } return drag;}void <a name="192"></a>QtFileIconView::keyPressEvent( <a href="qkeyevent.html">QKeyEvent</a> *e ){ if ( e->key() == Key_N && ( e->state() & ControlButton ) ) <a href=#187>newDirectory</a>(); else <a href="qiconview.html#c1b24e">QIconView::keyPressEvent</a>( e );}void <a name="193"></a>QtFileIconView::slotDropped( <a href="qdropevent.html">QDropEvent</a> *e, const QValueList<<a href="qicondragitem.html">QIconDragItem</a>> & ){ if ( openItem ) openItem->timer.stop(); if ( !QUriDrag::canDecode( e ) ) { e-><a href="qdropevent.html#e7a50f">ignore</a>(); return; } <a href="qstrlist.html">QStrList</a> lst; <a href="quridrag.html#e14cb1">QUriDrag::decode</a>( e, lst ); <a href="qstring.html">QString</a> str; if ( e-><a href="qdropevent.html#d9f8b7">action</a>() == QDropEvent::Copy ) str = "Copy\n\n"; else str = "Move\n\n"; for ( uint i = 0; i < lst.<a href="qlist.html#359d9f">count</a>(); ++i ) str += QString( " %1\n" ).arg( lst.<a href="qlist.html#0e7e42">at</a>( i ) ); str += QString( "\n" "To\n\n" " %1" ).arg( viewDir.absPath() ); <a href="qmessagebox.html#66b7c8">QMessageBox::information</a>( this, e-><a href="qdropevent.html#d9f8b7">action</a>() == QDropEvent::Copy ? "Copy" : "Move" , str, "Not Implemented" ); if ( e-><a href="qdropevent.html#d9f8b7">action</a>() == QDropEvent::Move ) <a href="qmessagebox.html#66b7c8">QMessageBox::information</a>( this, "Remove" , str, "Not Implemented" ); e-><a href="qdropevent.html#d37a0e">acceptAction</a>(); openItem = 0;}void <a name="194"></a>QtFileIconView::viewLarge(){ <a href=#205>setViewMode</a>( Large );}void <a name="195"></a>QtFileIconView::viewSmall(){ <a href=#205>setViewMode</a>( Small );}void <a name="196"></a>QtFileIconView::viewBottom(){ <a href="qiconview.html#a495e8">setItemTextPos</a>( Bottom );}void <a name="197"></a>QtFileIconView::viewRight(){ <a href="qiconview.html#a495e8">setItemTextPos</a>( Right );}void <a name="198"></a>QtFileIconView::flowEast(){ <a href="qscrollview.html#aaf795">setHScrollBarMode</a>( AlwaysOff ); <a href="qscrollview.html#817b47">setVScrollBarMode</a>( Auto ); <a href="qiconview.html#bf383b">setArrangement</a>( LeftToRight );}void <a name="199"></a>QtFileIconView::flowSouth(){ <a href="qscrollview.html#817b47">setVScrollBarMode</a>( AlwaysOff ); <a href="qscrollview.html#aaf795">setHScrollBarMode</a>( Auto ); <a href="qiconview.html#bf383b">setArrangement</a>( TopToBottom );}void <a name="200"></a>QtFileIconView::sortAscending(){ <a href="qiconview.html#7be9a1">sort</a>( TRUE );}void <a name="201"></a>QtFileIconView::sortDescending(){ <a href="qiconview.html#7be9a1">sort</a>( FALSE );}void <a name="202"></a>QtFileIconView::itemTextTruncate(){ <a href="qiconview.html#dbeaa6">setWordWrapIconText</a>( FALSE );}void <a name="203"></a>QtFileIconView::itemTextWordWrap(){ <a href="qiconview.html#dbeaa6">setWordWrapIconText</a>( TRUE );}void <a name="204"></a>QtFileIconView::slotRightPressed( <a href="qiconviewitem.html">QIconViewItem</a> *item ){ if ( !item ) { // right pressed on viewport <a href="qpopupmenu.html">QPopupMenu</a> menu( this ); menu.<a href="qmenudata.html#deddb9">insertItem</a>( "&Large view", this, SLOT( <a href=#194>viewLarge</a>() ) ); menu.<a href="qmenudata.html#deddb9">insertItem</a>( "&Small view", this, SLOT( <a href=#195>viewSmall</a>() ) ); menu.<a href="qmenudata.html#e34b79">insertSeparator</a>(); menu.<a href="qmenudata.html#deddb9">insertItem</a>( "Text at the &bottom", this, SLOT( <a href=#196>viewBottom</a>() ) ); menu.<a href="qmenudata.html#deddb9">insertItem</a>( "Text at the &right", this, SLOT( <a href=#197>viewRight</a>() ) ); menu.<a href="qmenudata.html#e34b79">insertSeparator</a>(); menu.<a href="qmenudata.html#deddb9">insertItem</a>( "Arrange l&eft to right", this, SLOT( <a href=#198>flowEast</a>() ) ); menu.<a href="qmenudata.html#deddb9">insertItem</a>( "Arrange t&op to bottom", this, SLOT( <a href=#199>flowSouth</a>() ) ); menu.<a href="qmenudata.html#e34b79">insertSeparator</a>(); menu.<a href="qmenudata.html#deddb9">insertItem</a>( "&Truncate item text", this, SLOT( <a href=#202>itemTextTruncate</a>() ) ); menu.<a href="qmenudata.html#deddb9">insertItem</a>( "&Wordwrap item text", this, SLOT( <a href=#203>itemTextWordWrap</a>() ) ); menu.<a href="qmenudata.html#e34b79">insertSeparator</a>(); menu.<a href="qmenudata.html#deddb9">insertItem</a>( "Arrange items in &grid", this, SLOT( <a href="qiconview.html#9fb7be">arrangeItemsInGrid</a>() ) ); menu.<a href="qmenudata.html#e34b79">insertSeparator</a>(); menu.<a href="qmenudata.html#deddb9">insertItem</a>( "Sort &ascending", this, SLOT( <a href=#200>sortAscending</a>() ) ); menu.<a href="qmenudata.html#deddb9">insertItem</a>( "Sort &descending", this, SLOT( <a href=#201>sortDescending</a>() ) ); menu.<a href="qwidget.html#36406c">setMouseTracking</a>( TRUE ); menu.<a href="qpopupmenu.html#ac4d90">exec</a>( <a href="qcursor.html#5bce2b">QCursor::pos</a>() ); } else { // on item <a href="qpopupmenu.html">QPopupMenu</a> menu( this ); int RENAME_ITEM = menu.<a href="qmenudata.html#deddb9">insertItem</a>( "Rename Item" ); int REMOVE_ITEM = menu.<a href="qmenudata.html#deddb9">insertItem</a>( "Remove Item" ); menu.<a href="qwidget.html#36406c">setMouseTracking</a>( TRUE ); int id = menu.<a href="qpopupmenu.html#ac4d90">exec</a>( <a href="qcursor.html#5bce2b">QCursor::pos</a>() ); if ( id == -1 ) return; if ( id == RENAME_ITEM && item-><a href="qiconviewitem.html#ec7f4e">renameEnabled</a>() ) { item-><a href="qiconviewitem.html#c6b054">rename</a>(); } else if ( id == REMOVE_ITEM ) { delete item; <a href="qmessagebox.html#66b7c8">QMessageBox::information</a>( this, "Not implemented!", "Deleting files not implemented yet,\n" "The item has only been removed from the view! " ); } }}void <a name="205"></a>QtFileIconView::setViewMode( ViewMode m ){ if ( m == vm ) return; vm = m; QtFileIconViewItem *item = (QtFileIconViewItem*)firstItem();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -