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

Alles rund um die Programmierung mit Qt
Antworten
kater
Beiträge: 306
Registriert: 29. Dezember 2009 01:13
Wohnort: Darmstadt

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

Beitrag 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
Zuletzt geändert von kater am 27. Mai 2010 23:57, insgesamt 1-mal geändert.
24dan
Beiträge: 274
Registriert: 26. Juni 2006 14:15
Wohnort: Hamburg

Beitrag von 24dan »

zeig doch mal Deinen mouseMoveEvent() & mousePressEvent() Teil.
"Der erste Trunk aus dem Becher der Naturwissenschaften macht atheistisch, aber auf dem Grund des Bechers wartet Gott."
(W. Heisenberg)
24dan
Beiträge: 274
Registriert: 26. Juni 2006 14:15
Wohnort: Hamburg

Beitrag 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();
    }
}
"Der erste Trunk aus dem Becher der Naturwissenschaften macht atheistisch, aber auf dem Grund des Bechers wartet Gott."
(W. Heisenberg)
kater
Beiträge: 306
Registriert: 29. Dezember 2009 01:13
Wohnort: Darmstadt

Beitrag 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 :)
24dan
Beiträge: 274
Registriert: 26. Juni 2006 14:15
Wohnort: Hamburg

Beitrag von 24dan »

Toll das kann ich auch gleich für meine Merkliste eintragen...
:wink:
"Der erste Trunk aus dem Becher der Naturwissenschaften macht atheistisch, aber auf dem Grund des Bechers wartet Gott."
(W. Heisenberg)
Antworten