Home | All Classes | Main Classes | Annotated | Grouped Classes | Functions |
This provides a very simple example of TQt's drag and drop functionality.
For a more complete example see the Drag and Drop example.
Header file:
/**************************************************************************** ** $Id: qt/main.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 TQt. This example ** program may be used, distributed and modified without limitation. ** *****************************************************************************/ #include <qapplication.h> #include <qcursor.h> #include <qsplitter.h> #include <qlistbox.h> #include <qiconview.h> #include <qpixmap.h> class TQDragEnterEvent; class TQDragDropEvent; class DDListBox : public TQListBox { Q_OBJECT public: DDListBox( TQWidget * parent = 0, const char * name = 0, WFlags f = 0 ); // Low-level drag and drop void dragEnterEvent( TQDragEnterEvent *evt ); void dropEvent( TQDropEvent *evt ); void mousePressEvent( TQMouseEvent *evt ); void mouseMoveEvent( TQMouseEvent * ); private: int dragging; }; class DDIconViewItem : public TQIconViewItem { public: DDIconViewItem( TQIconView *parent, const TQString& text, const TQPixmap& icon ) : TQIconViewItem( parent, text, icon ) {} DDIconViewItem( TQIconView *parent, const TQString &text ) : TQIconViewItem( parent, text ) {} // High-level drag and drop bool acceptDrop( const TQMimeSource *mime ) const; void dropped( TQDropEvent *evt, const TQValueList<TQIconDragItem>& ); }; class DDIconView : public TQIconView { Q_OBJECT public: DDIconView( TQWidget * parent = 0, const char * name = 0, WFlags f = 0 ) : TQIconView( parent, name, f ) {} // High-level drag and drop TQDragObject *dragObject(); public slots: void slotNewItem( TQDropEvent *evt, const TQValueList<TQIconDragItem>& list ); };
Implementation:
/**************************************************************************** ** $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 TQt. This example ** program may be used, distributed and modified without limitation. ** *****************************************************************************/ #include "main.h" const char* red_icon[]={ "16 16 2 1", "r c red", ". c None", "................", "................", "..rrrrrrrrrrrr..", "..rrrrrrrrrrrr..", "..rrrrrrrrrrrr..", "..rrr......rrr..", "..rrr......rrr..", "..rrr......rrr..", "..rrr......rrr..", "..rrr......rrr..", "..rrr......rrr..", "..rrrrrrrrrrrr..", "..rrrrrrrrrrrr..", "..rrrrrrrrrrrr..", "................", "................"}; const char* blue_icon[]={ "16 16 2 1", "b c blue", ". c None", "................", "................", "..bbbbbbbbbbbb..", "..bbbbbbbbbbbb..", "..bbbbbbbbbbbb..", "..bbb......bbb..", "..bbb......bbb..", "..bbb......bbb..", "..bbb......bbb..", "..bbb......bbb..", "..bbb......bbb..", "..bbbbbbbbbbbb..", "..bbbbbbbbbbbb..", "..bbbbbbbbbbbb..", "................", "................"}; const char* green_icon[]={ "16 16 2 1", "g c green", ". c None", "................", "................", "..gggggggggggg..", "..gggggggggggg..", "..gggggggggggg..", "..ggg......ggg..", "..ggg......ggg..", "..ggg......ggg..", "..ggg......ggg..", "..ggg......ggg..", "..ggg......ggg..", "..gggggggggggg..", "..gggggggggggg..", "..gggggggggggg..", "................", "................"}; // ListBox -- low level drag and drop DDListBox::DDListBox( TQWidget * parent, const char * name, WFlags f ) : TQListBox( parent, name, f ) { setAcceptDrops( TRUE ); dragging = FALSE; } void DDListBox::dragEnterEvent( TQDragEnterEvent *evt ) { if ( TQTextDrag::canDecode( evt ) ) evt->accept(); } void DDListBox::dropEvent( TQDropEvent *evt ) { TQString text; if ( TQTextDrag::decode( evt, text ) ) insertItem( text ); } void DDListBox::mousePressEvent( TQMouseEvent *evt ) { TQListBox::mousePressEvent( evt ); dragging = TRUE; } void DDListBox::mouseMoveEvent( TQMouseEvent * ) { if ( dragging ) { TQDragObject *d = new TQTextDrag( currentText(), this ); d->dragCopy(); // do NOT delete d. dragging = FALSE; } } // IconViewIcon -- high level drag and drop bool DDIconViewItem::acceptDrop( const TQMimeSource *mime ) const { if ( mime->provides( "text/plain" ) ) return TRUE; return FALSE; } void DDIconViewItem::dropped( TQDropEvent *evt, const TQValueList<TQIconDragItem>& ) { TQString label; if ( TQTextDrag::decode( evt, label ) ) setText( label ); } // IconView -- high level drag and drop TQDragObject *DDIconView::dragObject() { return new TQTextDrag( currentItem()->text(), this ); } void DDIconView::slotNewItem( TQDropEvent *evt, const TQValueList<TQIconDragItem>& ) { TQString label; if ( TQTextDrag::decode( evt, label ) ) { DDIconViewItem *item = new DDIconViewItem( this, label ); item->setRenameEnabled( TRUE ); } } int main( int argc, char *argv[] ) { TQApplication app( argc, argv ); // Create and show the widgets TQSplitter *split = new TQSplitter(); DDIconView *iv = new DDIconView( split ); (void) new DDListBox( split ); app.setMainWidget( split ); split->resize( 600, 400 ); split->show(); // Set up the connection so that we can drop items into the icon view TQObject::connect( iv, SIGNAL(dropped(TQDropEvent*, const TQValueList<TQIconDragItem>&)), iv, SLOT(slotNewItem(TQDropEvent*, const TQValueList<TQIconDragItem>&))); // Populate the TQIconView with icons DDIconViewItem *item; item = new DDIconViewItem( iv, "Red", TQPixmap( red_icon ) ); item->setRenameEnabled( TRUE ); item = new DDIconViewItem( iv, "Green", TQPixmap( green_icon ) ); item->setRenameEnabled( TRUE ); item = new DDIconViewItem( iv, "Blue", TQPixmap( blue_icon ) ); item->setRenameEnabled( TRUE ); return app.exec(); }
See also Examples.
Copyright © 2007 Trolltech | Trademarks | TQt 3.3.8
|