C++ (Qt)while (MouseDown()) { QPoint pt = GetMousePos(); ... }return selectedRect;
C++ (Qt)QRect ExecDragRect( const QPoint & startPt, // точка начала драга const QRect * limitR // ограничивающий пр-к (can be NULL) );
C++ (Qt)QPoint startPt = GetMousePos();QRect limitR = GetBounds(); // пр-к ограничительCOverShape shape(type_Rect); // индикатор (окно) выделения QRect oldR = MkRect(startPt, startPt, &limitR); while (MouseDown()) { QRect dragR = MkRect(startPt, GetMousePos(), &limitR); if (dragR == oldR) continue; // ничего не изменилось oldR = dragR; shape.Adjust(dragR);// emit dragRectChanged(dragR); // ???}// выделение закончено, обрабатываем рез-т....
C++ (Qt)QPoint startPt = GetMousePos();QRect limitR = GetBounds(); bool createDragShape = true;CDragControl ctl(widget, startPt, limitR, createDragShape); // вот этот контроллер на стекеQRect selection = ctl.Exec();
C++ (Qt)CDragControl ctl(widget, startPt, limitR, createDragShape); while (MouseDown()) { QPoint pt = GetMousePos(); bool changed = ctl.Update(pt); if (changed) { ...}
C++ (Qt)virtual bool СDragControl::AutoScroll( QWidget * widget, int dx, int dy);