Seite 1 von 1

[gelöst] keine Mouse Events werden ausgelöst

Verfasst: 27. Mai 2010 20:15
von kater
Haiho, bin in der nächsten Stolperfalle gefangen.

Habe mir mit dem QtCreator eine neue Form mit Classe gemacht. Da ein QScrollarea reingepackt und darin ein QLabel, welches ein Bild anzeigt.
Weiterhin habe ich die mouseMoveEvent() mousePressEvent u.s.w dieser neuen Form überschrieben. In den Funktionen steht nur ein qDebug() << "Blah"; Also ein reiner Test.
Nur werden die Event funktionen nicht aufgerufen.

Die Form rufe ich so auf:

Code: Alles auswählen

MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    form = new Form();
    form->show();
}
Also nichts besonderes.
Unter Windows werden die Event Funktionen aufgerufen, nur unter Linux nicht.

Qt Version ist 4.6.2. Auf Nachfrage kann ich auch den kompletten Code pasten. Habe nichts gefunden, dass man events erst extra einschalten muss oder so. Stehe, wie die letzten mal auch, auf dem Schlauch.
Freue mich auf Antworten.
Gruss

Verfasst: 27. Mai 2010 21:55
von 24dan
zeig doch mal Deinen mouseMoveEvent() & mousePressEvent() Teil.

Verfasst: 27. Mai 2010 22:00
von 24dan
Hier mal meine Funktionen zum Verschieben des Hauptfensters:

header

Code: Alles auswählen

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();

protected:
    // Events
    void mouseMoveEvent(QMouseEvent *event);
    void mousePressEvent(QMouseEvent *event);

stuff...

private:
    //! Fuer die Bewegung des Fensters
    QPoint m_dragPosition;
cpp

Code: Alles auswählen

/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
                   E V E N T S
  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*! 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: 27. Mai 2010 23:56
von kater
Ok, mit roten Stift auf den Merkzettel schreiben. Wenn man die Plattform wechselt danach IMMER qmake ausführen. Oder gleich das ganze Projekt bereinigen.

Jetzt gehts auch :)

Verfasst: 28. Mai 2010 13:26
von 24dan
Toll das kann ich auch gleich für meine Merkliste eintragen...
:wink: