Model undo stack is accessible in QML. Added Undo & Redo buttons, which are properly en-/disabled and have informative texts.

This commit is contained in:
2026-03-09 12:26:41 +01:00
parent e76fdaae9f
commit d08325cc3c
2 changed files with 38 additions and 14 deletions

View File

@ -5,9 +5,13 @@ import QtQuick.Controls.Material
Page {
id: page
ColumnLayout {
anchors.fill: parent
ListView {
id: listView
anchors.fill: parent
Layout.fillWidth: true
Layout.fillHeight: true
focus: true
clip: true
@ -25,6 +29,23 @@ Page {
gradient: mainGradient
}
}
Button {
Layout.fillWidth: true
text: "Undo: " + appUndoStack.undoText
enabled: appUndoStack.canUndo
onClicked: {
appUndoStack.undo()
}
}
Button {
Layout.fillWidth: true
text: "Redo: " + appUndoStack.redoText
enabled: appUndoStack.canRedo
onClicked: {
appUndoStack.redo()
}
}
}
Component {
//instantiated when header is processed

View File

@ -1,6 +1,7 @@
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQmlContext>
#include <QUndoCommand>
#include <model/generalsortfiltermodel.h>
@ -18,6 +19,7 @@ int main(int argc, char* argv[]) {
QGuiApplication app(argc, argv);
std::unique_ptr<GenericCore> core = std::make_unique<GenericCore>();
std::shared_ptr<GeneralSortFilterModel> mainModel = core->getSortFilterModel();
QUndoStack* undoStack = core->getModelUndoStack();
// qInfo() << "QMLApp Version:" << QMLAPP_VERSION;
qInfo() << "core->getString():" << core->toString();
@ -25,6 +27,7 @@ int main(int argc, char* argv[]) {
QQmlApplicationEngine engine;
engine.rootContext()->setContextProperty(QStringLiteral("core"), core.get());
engine.rootContext()->setContextProperty(QStringLiteral("mainModel"), mainModel.get());
engine.rootContext()->setContextProperty(QStringLiteral("appUndoStack"), undoStack);
QObject::connect(
&engine, &QQmlApplicationEngine::objectCreationFailed, &app,