Название: Drag формы label'ом
Отправлено: altai от Апрель 13, 2012, 11:38
Подскажите, имеется ли рабочий пример перетаскивания окна формы кастомным элементом, например label'ом?
Название: Re: Drag формы label'ом
Отправлено: GreatSnake от Апрель 13, 2012, 11:46
А что есть принципиальная разница на чём создавать QDrag объект?
Название: Re: Drag формы label'ом
Отправлено: ernie от Апрель 13, 2012, 13:04
по mouseMove эвенту лейбла двигать окно,не?
Название: Re: Drag формы label'ом
Отправлено: GreatSnake от Апрель 13, 2012, 13:40
по mouseMove эвенту лейбла двигать окно,не?
Упс, не сразу понял, что имелось в виду. Вот рабочий пример: C++ (Qt) #include <QApplication> #include <QMainWindow> #include <QLabel> #include <QMouseEvent> class Label : public QLabel { public: Label( const QString& s, QWidget* parent = 0 ) : QLabel( s, parent ) { setMouseTracking( true ); } protected: void mouseMoveEvent( QMouseEvent* e ) { if( !drag_pos_.isNull() ) { window()->move( window()->pos() + ( e->globalPos() - drag_pos_ ) ); drag_pos_ = e->globalPos(); } } void mousePressEvent( QMouseEvent* e ) { drag_pos_ = e->globalPos(); setCursor( QCursor( Qt::SizeAllCursor ) ); } void mouseReleaseEvent( QMouseEvent* e ) { drag_pos_ = QPoint(); unsetCursor(); } private: QPoint drag_pos_; }; int main( int argc, char** argv ) { QApplication app( argc, argv ); QMainWindow mw; Label l( "Drag me" ); l.setAlignment( Qt::AlignCenter ); mw.setCentralWidget( &l ); mw.show(); return app.exec(); }
|