toem hat geschrieben:Desweiteren wird das MoveEvent einmalig und nur am Ende des Movings ausgeführt (When the widget receives this event, it is already at the new position.)
Bringt also alles nichts
Probiers doch wenigstens aus, wäre nämlich die leichteste Variante!
Code: Alles auswählen
#include <QWidget>
#include <QMoveEvent>
#include <QDebug>
class Window : public QWidget
{
Q_OBJECT
protected:
void moveEvent(QMoveEvent *e)
{
qDebug() << e->oldPos() << e->pos();
}
};
Ausgabe bei schnellem Verschieben:
Code: Alles auswählen
QPoint(0,0) QPoint(0,0)
QPoint(0,0) QPoint(36,43)
QPoint(36,43) QPoint(46,43)
QPoint(46,43) QPoint(49,43)
QPoint(49,43) QPoint(50,43)
QPoint(50,43) QPoint(54,43)
QPoint(54,43) QPoint(60,43)
QPoint(60,43) QPoint(61,43)
QPoint(61,43) QPoint(64,43)
QPoint(64,43) QPoint(66,43)
QPoint(66,43) QPoint(69,43)
QPoint(69,43) QPoint(72,43)
QPoint(72,43) QPoint(73,43)
QPoint(73,43) QPoint(74,43)
QPoint(74,43) QPoint(76,43)
QPoint(76,43) QPoint(76,54)
QPoint(76,54) QPoint(76,56)
QPoint(76,56) QPoint(76,59)
QPoint(76,59) QPoint(76,61)
QPoint(76,61) QPoint(76,63)
Es ist also nicht so, dass das moveEvent erst aufgerufen wird, wenn du am Ende deiner Bewegung bist. Alle 10px 2-3 Events sollte doch reichen, oder?
Aber funktionieren wird es nicht, denn dich interessiert schon der erste Klick in die Window-Deko. Denn der Weg über das moveEvent geht nur mit einem Timer, der nach bestimmter Zeit, wenn nicht bewegt wurde, die Transparenz wieder rückgängig macht.
Und ich hab jetzt mal 1 Minute durch qmmp geschaut. Dich interessieren wohl in qmmp/src/ui die MainWindow und TitleBar.
Und die Zeit sollstest du dir schon nehmen, die Konsequenzen deiner Entscheidungen zu überdenken, und eine Lösung zu suchen die auch funktioniert, auch wenn du dafür mal ein bisschen in anderen Projekten schnüffeln musst...