listview.cpp

来自「Trolltech公司发布的基于C++图形开发环境」· C++ 代码 · 共 73 行

CPP
73
字号
#include <qdragobject.h>#include <qapplication.h>#include "listview.h"#include "dnd.h"ListView::ListView( QWidget* parent, const char* name )    : QListView( parent, name ){    setAcceptDrops( TRUE );    setSorting( -1, FALSE );    dragging = FALSE;}ListView::~ListView(){}void ListView::dragEnterEvent( QDragEnterEvent *e ){    if ( e->provides( "text/dragdemotag" ) )	e->accept();}void ListView::dropEvent( QDropEvent *e ){    if ( !e->provides( "text/dragdemotag" ) )         return;    QString tag;    if ( QTextDrag::decode( e, tag ) ) {        IconItem item = ((DnDDemo*) parentWidget())->findItem( tag );        QListViewItem *after = itemAt( viewport()->mapFromParent( e->pos() ) );        ListViewItem *litem = new ListViewItem( this, after, item.name(), tag );        litem->setPixmap( 0, *item.pixmap() );    }}void ListView::contentsMousePressEvent( QMouseEvent *e ){    QListView::contentsMousePressEvent( e );    dragging = TRUE;    pressPos = e->pos();}void ListView::contentsMouseMoveEvent( QMouseEvent *e ){    QListView::contentsMouseMoveEvent( e );    if ( ! dragging ) return;    if ( !currentItem() ) return;    if ( ( pressPos - e->pos() ).manhattanLength() > QApplication::startDragDistance() ) {        QTextDrag *drg = new QTextDrag( ((ListViewItem*)currentItem())->tag(), this );	const QPixmap *p = ((ListViewItem*)currentItem())->pixmap( 0 );	if (p)	    drg->setPixmap(*p);        drg->setSubtype( "dragdemotag" );        drg->dragCopy();        dragging = FALSE;    }}void ListView::contentsMouseReleaseEvent( QMouseEvent *e ){    QListView::contentsMouseReleaseEvent( e );    dragging = FALSE;}

⌨️ 快捷键说明

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