RubberBand
::RubberBand(QWidget *parent, Qt
::WFlags flags
) setAutoFillBackground( true );
palette.
setColor(backgroundRole
(),
QColor(Qt
::white) );
setPalette(palette);
btnPaste->setGeometry( 250, 250, 30, 40 );
connect( btnPaste, SIGNAL( clicked() ), this, SLOT( onPasteBtn() ) );
m_Rubberband = 0;
}
RubberBand::~RubberBand()
{}
void RubberBand::onPasteBtn(){
qApp->installEventFilter( this );
qApp->enter_loop();
}
if ( e
->type
() == QEvent::KeyPress && ((QKeyEvent *)e
)->key
() == Qt
::Key_Escape ){ // remove this event filter and exit the current event loop
qApp->removeEventFilter( this );
qApp->exit_loop();
delete m_Rubberband;
m_Rubberband = 0;
return TRUE;
}
if( e
->type
() == QEvent::MouseMove ){
m_pasteRect.
setBottom( ((QMouseEvent *)e
)->pos
().
x() + 50 );
m_pasteRect.
setRight( ((QMouseEvent *)e
)->pos
().
y() + 50 );
if( !m_Rubberband )
//qDebug() << ((QMouseEvent *)e)->pos().x() << ((QMouseEvent *)e)->pos().y();
m_Rubberband->setGeometry( m_pasteRect );
m_Rubberband->show();
return TRUE;
}
else if( e
->type
() == QEvent::MouseButtonRelease ){ // remove this event filter and exit the current event loop
qApp->removeEventFilter( this );
qApp->exit_loop();
delete m_Rubberband;
m_Rubberband = 0;
return TRUE; // eat event
}
return TRUE; // block standard event processing
}
RubberBand::RubberBand(QWidget *parent, Qt::WFlags flags)
: QWidget(parent, flags){
setAutoFillBackground( true );
QPalette palette;
palette.setColor(backgroundRole(), QColor(Qt::white) );
setPalette(palette);
QPushButton* btnPaste = new QPushButton("Paste", this);
btnPaste->setGeometry( 250, 250, 30, 40 );
connect( btnPaste, SIGNAL( clicked() ), this, SLOT( onPasteBtn() ) );
m_Rubberband = 0;
}
RubberBand::~RubberBand()
{}
void RubberBand::onPasteBtn(){
qApp->installEventFilter( this );
qApp->enter_loop();
}
bool RubberBand::eventFilter( QObject *obj, QEvent *e ){
if ( e->type() == QEvent::KeyPress && ((QKeyEvent *)e)->key() == Qt::Key_Escape ){
// remove this event filter and exit the current event loop
qApp->removeEventFilter( this );
qApp->exit_loop();
delete m_Rubberband;
m_Rubberband = 0;
return TRUE;
}
if( e->type() == QEvent::MouseMove ){
m_pasteRect.setTop( ((QMouseEvent *)e)->pos().x() );
m_pasteRect.setLeft( ((QMouseEvent *)e)->pos().y() );
m_pasteRect.setBottom( ((QMouseEvent *)e)->pos().x() + 50 );
m_pasteRect.setRight( ((QMouseEvent *)e)->pos().y() + 50 );
if( !m_Rubberband )
m_Rubberband = new QRubberBand(QRubberBand::Rectangle, this);
//qDebug() << ((QMouseEvent *)e)->pos().x() << ((QMouseEvent *)e)->pos().y();
m_Rubberband->setGeometry( m_pasteRect );
m_Rubberband->show();
return TRUE;
}
else if( e->type() == QEvent::MouseButtonRelease ){
// remove this event filter and exit the current event loop
qApp->removeEventFilter( this );
qApp->exit_loop();
delete m_Rubberband;
m_Rubberband = 0;
return TRUE; // eat event
}
return TRUE; // block standard event processing
}
To copy to clipboard, switch view to plain text mode
Bookmarks