<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
< html >
< head >
< meta http-equiv = "Content-Type" content = "text/html; charset=ISO-8859-1" >
< title > Drag and Drop (Simple)< / title >
< style type = "text/css" > < ! - -
fn { margin-left: 1cm; text-indent: -1cm; }
a:link { color: #004faf; text-decoration: none }
a:visited { color: #672967; text-decoration: none }
body { background: #ffffff; color: black; }
-->< / style >
< / head >
< body >
< table border = "0" cellpadding = "0" cellspacing = "0" width = "100%" >
< tr bgcolor = "#E5E5E5" >
< td valign = center >
< a href = "index.html" >
< font color = "#004faf" > Home< / font > < / a >
| < a href = "classes.html" >
< font color = "#004faf" > All Classes< / font > < / a >
| < a href = "mainclasses.html" >
< font color = "#004faf" > Main Classes< / font > < / a >
| < a href = "annotated.html" >
< font color = "#004faf" > Annotated< / font > < / a >
| < a href = "groups.html" >
< font color = "#004faf" > Grouped Classes< / font > < / a >
| < a href = "functions.html" >
< font color = "#004faf" > Functions< / font > < / a >
< / td >
< td align = "right" valign = "center" > < img src = "logo32.png" align = "right" width = "64" height = "32" border = "0" > < / td > < / tr > < / table > < h1 align = center > Drag and Drop (Simple)< / h1 >
< p >
This provides a very simple example of TQt's drag and drop
functionality.
< p > For a more complete example see the < a href = "dragdrop-example.html" > Drag and Drop example< / a > .
< p > < hr >
< p > Header file:
< p > < pre > /****************************************************************************
** $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 < < a href = "qapplication-h.html" > ntqapplication.h< / a > >
#include < < a href = "tqcursor-h.html" > tqcursor.h< / a > >
#include < < a href = "tqsplitter-h.html" > tqsplitter.h< / a > >
#include < < a href = "tqlistbox-h.html" > tqlistbox.h< / a > >
#include < < a href = "tqiconview-h.html" > tqiconview.h< / a > >
#include < < a href = "tqpixmap-h.html" > tqpixmap.h< / a > >
class TQDragEnterEvent;
class TQDragDropEvent;
class DDListBox : public < a href = "tqlistbox.html" > TQListBox< / a >
{
< a href = "metaobjects.html#TQ_OBJECT" > TQ_OBJECT< / a >
public:
DDListBox( < a href = "tqwidget.html" > TQWidget< / a > * parent = 0, const char * name = 0, WFlags f = 0 );
// Low-level drag and drop
void dragEnterEvent( < a href = "tqdragenterevent.html" > TQDragEnterEvent< / a > *evt );
void dropEvent( < a href = "tqdropevent.html" > TQDropEvent< / a > *evt );
void mousePressEvent( < a href = "tqmouseevent.html" > TQMouseEvent< / a > *evt );
void mouseMoveEvent( < a href = "tqmouseevent.html" > TQMouseEvent< / a > * );
private:
int dragging;
};
class DDIconViewItem : public < a href = "tqiconviewitem.html" > TQIconViewItem< / a >
{
public:
DDIconViewItem( < a href = "tqiconview.html" > TQIconView< / a > *parent, const < a href = "tqstring.html" > TQString< / a > & text, const < a href = "tqpixmap.html" > TQPixmap< / a > & icon ) :
< a href = "tqiconviewitem.html" > TQIconViewItem< / a > ( parent, text, icon ) {}
DDIconViewItem( < a href = "tqiconview.html" > TQIconView< / a > *parent, const < a href = "tqstring.html" > TQString< / a > & text ) :
< a href = "tqiconviewitem.html" > TQIconViewItem< / a > ( parent, text ) {}
// High-level drag and drop
bool acceptDrop( const < a href = "tqmimesource.html" > TQMimeSource< / a > *mime ) const;
void dropped( < a href = "tqdropevent.html" > TQDropEvent< / a > *evt, const < a href = "tqvaluelist.html" > TQValueList< / a > < TQIconDragItem> & );
};
class DDIconView : public < a href = "tqiconview.html" > TQIconView< / a >
{
TQ_OBJECT
public:
DDIconView( < a href = "tqwidget.html" > TQWidget< / a > * parent = 0, const char * name = 0, WFlags f = 0 ) :
< a href = "tqiconview.html" > TQIconView< / a > ( parent, name, f ) {}
// High-level drag and drop
< a href = "tqdragobject.html" > TQDragObject< / a > *dragObject();
public slots:
void slotNewItem( < a href = "tqdropevent.html" > TQDropEvent< / a > *evt, const < a href = "tqvaluelist.html" > TQValueList< / a > < TQIconDragItem> & list );
};
< / pre >
< p > < hr >
< p > Implementation:
< p > < pre > /****************************************************************************
** $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
< a name = "f589" > < / a > DDListBox::DDListBox( < a href = "tqwidget.html" > TQWidget< / a > * parent, const char * name, WFlags f ) :
< a href = "tqlistbox.html" > TQListBox< / a > ( parent, name, f )
{
< a href = "tqwidget.html#setAcceptDrops" > setAcceptDrops< / a > ( TRUE );
dragging = FALSE;
}
< a name = "x2829" > < / a > void DDListBox::< a href = "tqwidget.html#dragEnterEvent" > dragEnterEvent< / a > ( < a href = "tqdragenterevent.html" > TQDragEnterEvent< / a > *evt )
{
< a name = "x2827" > < / a > if ( TQTextDrag::< a href = "tqtextdrag.html#canDecode" > canDecode< / a > ( evt ) )
< a name = "x2819" > < / a > evt-> < a href = "tqdragmoveevent.html#accept" > accept< / a > ();
}
< a name = "x2830" > < / a > void DDListBox::< a href = "tqwidget.html#dropEvent" > dropEvent< / a > ( < a href = "tqdropevent.html" > TQDropEvent< / a > *evt )
{
< a href = "tqstring.html" > TQString< / a > text;
< a name = "x2828" > < / a > if ( TQTextDrag::< a href = "tqtextdrag.html#decode" > decode< / a > ( evt, text ) )
< a href = "tqlistbox.html#insertItem" > insertItem< / a > ( text );
}
< a name = "x2832" > < / a > void DDListBox::< a href = "tqwidget.html#mousePressEvent" > mousePressEvent< / a > ( < a href = "tqmouseevent.html" > TQMouseEvent< / a > *evt )
{
TQListBox::< a href = "tqwidget.html#mousePressEvent" > mousePressEvent< / a > ( evt );
dragging = TRUE;
}
< a name = "x2831" > < / a > void DDListBox::< a href = "tqwidget.html#mouseMoveEvent" > mouseMoveEvent< / a > ( < a href = "tqmouseevent.html" > TQMouseEvent< / a > * )
{
if ( dragging ) {
< a href = "tqdragobject.html" > TQDragObject< / a > *d = new < a href = "tqtextdrag.html" > TQTextDrag< / a > ( currentText(), this );
< a name = "x2818" > < / a > d-> < a href = "tqdragobject.html#dragCopy" > dragCopy< / a > (); // do NOT delete d.
dragging = FALSE;
}
}
// IconViewIcon -- high level drag and drop
< a name = "x2822" > < / a > bool DDIconViewItem::< a href = "tqiconviewitem.html#acceptDrop" > acceptDrop< / a > ( const < a href = "tqmimesource.html" > TQMimeSource< / a > *mime ) const
{
< a name = "x2825" > < / a > if ( mime-> < a href = "tqmimesource.html#provides" > provides< / a > ( "text/plain" ) )
return TRUE;
return FALSE;
}
< a name = "x2823" > < / a > void DDIconViewItem::< a href = "tqiconviewitem.html#dropped" > dropped< / a > ( < a href = "tqdropevent.html" > TQDropEvent< / a > *evt, const < a href = "tqvaluelist.html" > TQValueList< / a > < TQIconDragItem> & )
{
< a href = "tqstring.html" > TQString< / a > label;
if ( TQTextDrag::< a href = "tqtextdrag.html#decode" > decode< / a > ( evt, label ) )
setText( label );
}
// IconView -- high level drag and drop
< a name = "x2820" > < / a > TQDragObject *DDIconView::< a href = "tqiconview.html#dragObject" > dragObject< / a > ()
{
return new < a href = "tqtextdrag.html" > TQTextDrag< / a > ( < a href = "tqiconview.html#currentItem" > currentItem< / a > ()-> text(), this );
}
void < a name = "f588" > < / a > DDIconView::slotNewItem( < a href = "tqdropevent.html" > TQDropEvent< / a > *evt, const < a href = "tqvaluelist.html" > TQValueList< / a > < TQIconDragItem> & )
{
< a href = "tqstring.html" > TQString< / a > label;
if ( TQTextDrag::< a href = "tqtextdrag.html#decode" > decode< / a > ( evt, label ) ) {
DDIconViewItem *item = new DDIconViewItem( this, label );
< a name = "x2824" > < / a > item-> < a href = "tqiconviewitem.html#setRenameEnabled" > setRenameEnabled< / a > ( TRUE );
}
}
int main( int argc, char *argv[] )
{
< a href = "ntqapplication.html" > TQApplication< / a > app( argc, argv );
// Create and show the widgets
< a href = "tqsplitter.html" > TQSplitter< / a > *split = new < a href = "tqsplitter.html" > TQSplitter< / a > ();
DDIconView *iv = new DDIconView( split );
(void) new DDListBox( split );
app.< a href = "ntqapplication.html#setMainWidget" > setMainWidget< / a > ( split );
split-> < a href = "tqwidget.html#resize" > resize< / a > ( 600, 400 );
split-> < a href = "tqwidget.html#show" > show< / a > ();
// Set up the connection so that we can drop items into the icon view
TQObject::< a href = "tqobject.html#connect" > connect< / a > (
< a name = "x2821" > < / a > iv, TQ_SIGNAL(< a href = "tqiconview.html#dropped" > dropped< / a > (TQDropEvent*, const < a href = "tqvaluelist.html" > TQValueList< / a > < TQIconDragItem> & )),
iv, TQ_SLOT(slotNewItem(TQDropEvent*, const < a href = "tqvaluelist.html" > TQValueList< / a > < TQIconDragItem> & )));
// Populate the TQIconView with icons
DDIconViewItem *item;
item = new DDIconViewItem( iv, "Red", TQPixmap( red_icon ) );
item-> < a href = "tqiconviewitem.html#setRenameEnabled" > setRenameEnabled< / a > ( TRUE );
item = new DDIconViewItem( iv, "Green", TQPixmap( green_icon ) );
item-> < a href = "tqiconviewitem.html#setRenameEnabled" > setRenameEnabled< / a > ( TRUE );
item = new DDIconViewItem( iv, "Blue", TQPixmap( blue_icon ) );
item-> < a href = "tqiconviewitem.html#setRenameEnabled" > setRenameEnabled< / a > ( TRUE );
return app.< a href = "ntqapplication.html#exec" > exec< / a > ();
}
< / pre >
< p > < 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 © 2007
< a href = "troll.html" > Trolltech< / a > < td align = center > < a href = "trademarks.html" > Trademarks< / a >
< td align = right > < div align = right > TQt 3.3.8< / div >
< / table > < / div > < / address > < / body >
< / html >