Skip to content

Commit a573c05

Browse files
zmothpaceholder
authored andcommitted
Using modified signal in the calculator example
1 parent b320546 commit a573c05

File tree

3 files changed

+23
-8
lines changed

3 files changed

+23
-8
lines changed

examples/calculator/main.cpp

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,12 @@ int main(int argc, char *argv[])
7777

7878
auto menuBar = new QMenuBar();
7979
QMenu *menu = menuBar->addMenu("File");
80+
8081
auto saveAction = menu->addAction("Save Scene");
82+
saveAction->setShortcut(QKeySequence::Save);
83+
8184
auto loadAction = menu->addAction("Load Scene");
85+
loadAction->setShortcut(QKeySequence::Open);
8286

8387
QVBoxLayout *l = new QVBoxLayout(&mainWidget);
8488

@@ -92,13 +96,20 @@ int main(int argc, char *argv[])
9296
l->setContentsMargins(0, 0, 0, 0);
9397
l->setSpacing(0);
9498

95-
QObject::connect(saveAction, &QAction::triggered, scene, &DataFlowGraphicsScene::save);
99+
QObject::connect(saveAction, &QAction::triggered, scene, [scene, &mainWidget]() {
100+
if (scene->save())
101+
mainWidget.setWindowModified(false);
102+
});
96103

97104
QObject::connect(loadAction, &QAction::triggered, scene, &DataFlowGraphicsScene::load);
98105

99106
QObject::connect(scene, &DataFlowGraphicsScene::sceneLoaded, view, &GraphicsView::centerScene);
100107

101-
mainWidget.setWindowTitle("Data Flow: simplest calculator");
108+
QObject::connect(scene, &DataFlowGraphicsScene::modified, &mainWidget, [&mainWidget]() {
109+
mainWidget.setWindowModified(true);
110+
});
111+
112+
mainWidget.setWindowTitle("[*]Data Flow: simplest calculator");
102113
mainWidget.resize(800, 600);
103114
// Center window.
104115
mainWidget.move(QApplication::primaryScreen()->availableGeometry().center()

include/QtNodes/internal/DataFlowGraphicsScene.hpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ class NODE_EDITOR_PUBLIC DataFlowGraphicsScene : public BasicGraphicsScene
2626
QMenu *createSceneMenu(QPointF const scenePos) override;
2727

2828
public Q_SLOTS:
29-
void save() const;
29+
bool save() const;
3030

31-
void load();
31+
bool load();
3232

3333
Q_SIGNALS:
3434
void sceneLoaded();

src/DataFlowGraphicsScene.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ QMenu *DataFlowGraphicsScene::createSceneMenu(QPointF const scenePos)
144144
return modelMenu;
145145
}
146146

147-
void DataFlowGraphicsScene::save() const
147+
bool DataFlowGraphicsScene::save() const
148148
{
149149
QString fileName = QFileDialog::getSaveFileName(nullptr,
150150
tr("Open Flow Scene"),
@@ -158,24 +158,26 @@ void DataFlowGraphicsScene::save() const
158158
QFile file(fileName);
159159
if (file.open(QIODevice::WriteOnly)) {
160160
file.write(QJsonDocument(_graphModel.save()).toJson());
161+
return true;
161162
}
162163
}
164+
return false;
163165
}
164166

165-
void DataFlowGraphicsScene::load()
167+
bool DataFlowGraphicsScene::load()
166168
{
167169
QString fileName = QFileDialog::getOpenFileName(nullptr,
168170
tr("Open Flow Scene"),
169171
QDir::homePath(),
170172
tr("Flow Scene Files (*.flow)"));
171173

172174
if (!QFileInfo::exists(fileName))
173-
return;
175+
return false;
174176

175177
QFile file(fileName);
176178

177179
if (!file.open(QIODevice::ReadOnly))
178-
return;
180+
return false;
179181

180182
clearScene();
181183

@@ -184,6 +186,8 @@ void DataFlowGraphicsScene::load()
184186
_graphModel.load(QJsonDocument::fromJson(wholeFile).object());
185187

186188
Q_EMIT sceneLoaded();
189+
190+
return true;
187191
}
188192

189193
} // namespace QtNodes

0 commit comments

Comments
 (0)