Seite 1 von 1

MainWindow Randlos Bewegen MouseEvent

Verfasst: 10. Januar 2010 12:13
von 24dan
... habe mir ein rahmenloses MainWindow gezaubert.

Problem: Kann dies jedoch nur über den "grünen" Bereich auf dem Bildschirm verschieben.
Würde es gerne auch über die rot makierten Bereich verschieben können.

Benutze folgenen Funktionen dafür:

Code: Alles auswählen

/*! MouseMove fuer das Bewegen des Fensters
\param event QMouseEvent Mouse Event
*/
void MainWindow::mouseMoveEvent(QMouseEvent *event)
{
    if (event->buttons() & Qt::LeftButton) {
        move(event->globalPos() - m_dragPosition);
        event->accept();
    }
}



/*! MousePressed fuer das Bewegen des Fensters
\param event QMouseEvent Mouse Event
*/
void MainWindow::mousePressEvent(QMouseEvent *event)
{
    if (event->button() == Qt::LeftButton) {
        m_dragPosition = event->globalPos() - frameGeometry().topLeft();
        event->accept();
    }
}

Verfasst: 10. Januar 2010 17:41
von upsala
Dann verrate uns doch mal wie du den Rahmen wegbekommen hast.

Verfasst: 10. Januar 2010 17:49
von 24dan
Na gut :

so....

Code: Alles auswählen

    Qt::WindowFlags flags = 0;
    flags = Qt::CustomizeWindowHint;
    this->setWindowFlags(flags);
[/code]

Verfasst: 10. Januar 2010 18:18
von upsala
Warum nimmst du dem User den Rahmen weg und somit die Möglichkeit, das Fenster zu verschieben/resizen usw.? Und dann implementierst du das alles wieder selbst nach?!?

Dein Code trifft nur auf das QMainWidget zu. Aber nicht auf die QMenuBar, das centralWidget und sonstige Widgets. Also auf jeden Fall viel Spaß mit dem eventFilter...

Verfasst: 10. Januar 2010 19:35
von 24dan
ehrlich gesagt hatte ich keine andere Möglichkeit gesehen den hässlichen blauen WindowsFensterrahmen weg zu bekommen.

Songbird hat das übrigens genauso für ausreichend befunden.

Das war alles...

Wie kann ich die Events auf das MenuBar abfangen?