Russian Qt Forum
Сентябрь 30, 2024, 18:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Drag формы label'ом  (Прочитано 2761 раз)
altai
Гость
« : Апрель 13, 2012, 11:38 »

Подскажите, имеется ли рабочий пример перетаскивания окна формы кастомным элементом, например label'ом?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Апрель 13, 2012, 11:46 »

А что есть принципиальная разница на чём создавать QDrag объект?
Записан

Qt 5.11/4.8.7 (X11/Win)
ernie
Гость
« Ответ #2 : Апрель 13, 2012, 13:04 »

по mouseMove эвенту лейбла двигать окно,не?
Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #3 : Апрель 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();
}
 
Записан

Qt 5.11/4.8.7 (X11/Win)
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.231 секунд. Запросов: 23.