Ich bin ein einfaches Programm zu schreiben (C++, QT, QML), in dem ich resizeEvent
implementieren möchten und dann andujst die Fensterhöhe und -breite mit einigen Muster . Mein Problem ist, dass wenn ich die Größe des Fensters verändere, resizeEvent
nicht aufgerufen wird. Ich denke, dass ich etwas wirklich falsch mache, aber ich bin mir nicht sicher, was es ist. Irgendwelche Ideen werden geschätzt.Resize-Ereignis aus einer anderen Klasse von Qwindow in QT geerbt
main.cpp
int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QLatin1String("qrc:/main.qml")));
QObject *root = engine.rootObjects().first();
class CMaze maze(root,&engine);
return app.exec();
}
CMaze.h
class CMaze: public QWindow
{
public:
CMaze(QObject *root, QQmlApplicationEngine *engine);
private:
QObject *root;
QQmlApplicationEngine *engine;
/*+ Some other variables*/
void resizeEvent(QResizeEvent *event);
};
CMaze.cpp
CMaze::CMaze(QObject *root,QQmlApplicationEngine *engine)
{
this->root = root;
this->engine = engine;
/* + Some other functionality*/
}
void CMaze::resizeEvent(QResizeEvent *event)
{
qDebug() << "resize event entered"; // NEVER WRITTEN to CONSOLE WHEN RESIZING
}
EDIT:
main.qml:
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("The Maze")
Rectangle{
id: background
objectName: "background"
anchors.fill: parent
color: "#ffffcc"
}
}
Zuerst vergessen Sie nicht 'Q_OBJECT' Makro in der' CMaze-Erklärung. Versuchen Sie als zweites, 'override' (nur seit C++ 11) Schlüsselwort auf' resizeEvent' zu verwenden: Haben Sie sich nicht geirrt? – ilotXXI
Leider ist das Verhalten immer noch dasselbe, mit '' 'Q_OBJECT''' Makro und hinzugefügt' '' override''' Schlüsselwort. –
@ilotXXI: Er braucht 'Q_OBJECT' hier nicht. –