problems with registration
Unsolved
QML and Qt Quick
-
Hello everyone
I’m on a project and I’m almost done.
The problem is that when I was loading a file
and I save the file
the file name or the file path is lost
interface is code in qml and c++ operating rating
file Editeur qmlimport QtQuick import QtCore import QtQuick.Controls import QtQuick.Layouts import QtQuick.Dialogs import Qt.labs.settings import Qt.labs.platform as Platform //MyComponent import BlackEditeur 1.0 Page { id: rootEditeur property string sfilePath: qsTr("Ecrirez votre texte ici.....") property int delayToolTip: 100 property int timeOutToolTip: 5000 property string moreToolTip: qsTr("Plus") Action { id:onBackStackAction onTriggered: onBackStack() } Action{ id: actionSearch shortcut: "Ctrl+F" onTriggered: onSearch() } header: ToolBar{ anchors.top: parent.top RowLayout { id: rowLayout anchors.fill: parent spacing: 6 ToolButton { icon.source: "qrc:/Icon/Note-Black/24x24/back.png" icon.height: 24 icon.width: 24 Layout.alignment: Qt.AlignLeft action: onBackStackAction } ToolSeparator{Layout.fillHeight: true} Label { id: nomeApp text: "Editeur" + (" - ") + document.fileName font.bold: true font.letterSpacing: 2 font.pixelSize: 24 horizontalAlignment: Qt.AlignHCenter verticalAlignment: Qt.AlignVCenter } ToolButton { icon.source: "qrc:/Icon//Note-Black/24x24/search" icon.height: 24 icon.width: 24 action: actionSearch Layout.alignment: Qt.AlignRight } } } Action{ id: actionOpen shortcut: StandardKey.Open onTriggered: openDialog.open() } Action{ id: actionSave shortcut: StandardKey.Save onTriggered: savefunc() } Action{ id: actionSaveAs shortcut: StandardKey.SaveAs onTriggered: saveDialog.open() } Action{ id: actionShowBar onTriggered: onShowBar() } Action{ id: actionRedo enabled: textArea.canRedo onTriggered: textArea.redo() } Action{ id: actionUndo enabled: textArea.canUndo onTriggered: textArea.undo() } Action{ id: actionCut enabled: textArea.selectedText onTriggered: textArea.cut() } Action{ id: actionCopy enabled: textArea.selectedText onTriggered: textArea.copy() } Action{ id: actionPaste enabled: textArea.canPaste onTriggered: textArea.paste() } Action{ id: actionErase enabled: textArea.selectedText onTriggered: textArea.clear() } Action{ id:actionSelectAll enabled: textArea.length >! 0 onTriggered: textArea.selectAll() } Action{ id: actionBold shortcut: StandardKey.Bold onTriggered: document.bold = !document.bold } Action { id: actionItalic shortcut: StandardKey.Italic onTriggered: document.italic = !document.italic } Action { id: actionUnderline shortcut: StandardKey.Underline onTriggered: document.underline = !document.underline } Action { id:actionHideBar onTriggered: onHideBar() } Editeur { id: document document: textArea.textDocument cursorPosition: textArea.cursorPosition selectionStart: textArea.selectionStart selectionEnd: textArea.selectionEnd property alias family: document.font.family property alias bold: document.font.bold property alias italic: document.font.italic property alias underline: document.font.underline property alias strikeout: document.font.strikeout // property alias size: document.font.pointSize onLoaded: function lod(text, format) { textArea.textFormat = format textArea.text = text } onError: function (message) { errorDialog.text = message errorDialog.open() } } Flickable { id: flickable flickableDirection: Flickable.VerticalFlick anchors.fill: parent TextArea.flickable: TextArea { id: textArea placeholderText: qsTr("Ecrirez votre texte ici.....") textFormat: Qt.RichText wrapMode: TextArea.Wrap font.pixelSize: 16 focus: true selectByMouse: true persistentSelection: true leftPadding: 6 rightPadding: 6 topPadding: 12 bottomPadding: 35 background: Rectangle { gradient: Gradient{ GradientStop{position:0; color:"#ffffff"} GradientStop{position:1; color:"#c1bbf9"} } } MouseArea { acceptedButtons: Qt.RightButton anchors.fill: parent onClicked: contextMenu.open() } /* TextArea{ anchors.bottom: parent.bottom text: qsTr("Date de Creation ") + settings.dateFormat wrapMode: TextArea.Wrap }*/ } ScrollBar.vertical: ScrollBar{} } Platform.Menu { id: contextMenu Platform.MenuItem{ text: qsTr("Refaire") enabled: textArea.canRedo onTriggered: textArea.redo() } Platform.MenuItem{ text: qsTr("Annuler") enabled: textArea.canUndo onTriggered: textArea.undo() } Platform.MenuSeparator{} Platform.MenuItem{ text: qsTr("Copier") enabled: textArea.selectedText onTriggered: textArea.copy() } Platform.MenuItem{ text: qsTr("Couper") enabled: textArea.selectedText onTriggered: textArea.cut() } Platform.MenuItem{ text: qsTr("Coller") enabled: textArea.canPaste onTriggered: textArea.paste() } Platform.MenuSeparator{} Platform.MenuItem{ text: qsTr("Tout Sélectionner") enabled: textArea.text onTriggered: textArea.selectAll() } } Search{ id: search visible: false } footer: ToolBar { id: footerPage /* ColumnLayout { anchors.fill: parent spacing: 2 id: colEditeur RowLayout{ ToolButton{ icon.source: "qrc:/Icon/Note-Black/16x16/redo.png" enabled: textArea.canRedo } ToolButton{ icon.source: "qrc:/Icon/Note-Black/16x16/undo" enabled: textArea.canUndo } ToolSeparator{} ToolButton{ icon.source: "qrc:/Icon/Note-Black/16x16/cut.png" enabled: textArea.selectedText } ToolButton{ icon.source: "qrc:/Icon/Note-Black/16x16/copy.png" enabled: textArea.selectedText } ToolButton{ icon.source: "qrc:/Icon/Note-Black/16x16/paste.png" enabled: textArea.canPaste } ToolButton{ icon.source: "qrc:/Icon/Note-Black/16x16/erase.png" enabled: textArea.selectedText } ToolSeparator{} ToolButton{ icon.source: "qrc:/Icon/Note-Black/16x16/select_all.png" enabled: textArea.length >! 0 } ToolButton { id: moreToolBar icon.source: "qrc:/Icon/Note-Black/16x16/showbar.png" Layout.alignment: Qt.AlignRight } } }*/ /* GridLayout { id: grif anchors.fill: parent //columns: 1 // ColumnLayout{ Rectangle{ //anchors.fill: parent Layout.fillWidth: true Layout.fillHeight: true RowLayout{ //anchors.fill: parent ToolButton{ icon.source: "qrc:/Icon/Note-Black/16x16/file.png" action: actionOpen ToolTip.text: qsTr("Ouvrire") ToolTip.visible: hovered ToolTip.delay: delayToolTip ToolTip.timeout: timeOutToolTip } ToolButton{ icon.source: "qrc:/Icon/Note-Black/16x16/save.png" action: actionSave ToolTip.text: qsTr("Enregistre") ToolTip.visible: hovered ToolTip.delay: delayToolTip ToolTip.timeout: timeOutToolTip } ToolButton{ icon.source: "qrc:/Icon/Note-Black/16x16/save_as.png" action: actionSaveAs ToolTip.text: qsTr("Enregistre sous..") ToolTip.visible: hovered ToolTip.delay: delayToolTip ToolTip.timeout: timeOutToolTip } ToolSeparator{} ToolButton{ icon.source: "qrc:/Icon/Note-Black/16x16/redo.png" action: actionRedo ToolTip.text: qsTr("Annuler") ToolTip.visible: hovered ToolTip.delay: delayToolTip ToolTip.timeout: timeOutToolTip } ToolButton{ icon.source: "qrc:/Icon/Note-Black/16x16/undo" action: actionUndo ToolTip.text: qsTr("Refaire") ToolTip.visible: hovered ToolTip.delay: delayToolTip ToolTip.timeout: timeOutToolTip } ToolSeparator{} ToolButton{ icon.source: "qrc:/Icon/Note-Black/16x16/cut.png" action: actionCut ToolTip.text: qsTr("Couper") ToolTip.visible: hovered ToolTip.delay: delayToolTip ToolTip.timeout: timeOutToolTip } ToolButton{ icon.source: "qrc:/Icon/Note-Black/16x16/copy.png" action: actionCopy ToolTip.text: qsTr("Copier") ToolTip.visible: hovered ToolTip.delay: delayToolTip ToolTip.timeout: timeOutToolTip } ToolButton{ icon.source: "qrc:/Icon/Note-Black/16x16/paste.png" action: actionPaste ToolTip.text: qsTr("Coller") ToolTip.visible: hovered ToolTip.delay: delayToolTip ToolTip.timeout: timeOutToolTip } ToolButton{ icon.source: "qrc:/Icon/Note-Black/16x16/erase.png" action: actionErase ToolTip.text: qsTr("Effacer") ToolTip.visible: hovered ToolTip.delay: delayToolTip ToolTip.timeout: timeOutToolTip } ToolSeparator{} ToolButton{ icon.source: "qrc:/Icon/Note-Black/16x16/select_all.png" action: actionSelectAll ToolTip.text: qsTr("Sélectionner tout") ToolTip.visible: hovered ToolTip.delay: delayToolTip ToolTip.timeout: timeOutToolTip } ToolButton { id: moreToolBar icon.source: "qrc:/Icon/Note-Black/16x16/showbar.png" action: actionShowBar // Layout.alignment: Qt.AlignRight ToolTip.text: moreToolTip ToolTip.visible: hovered ToolTip.delay: delayToolTip ToolTip.timeout: timeOutToolTip } // } } } // ColumnLayout{ Rectangle{ id: row2 visible: true Layout.fillWidth: true Layout.fillHeight: true RowLayout { // anchors.fill: parent ToolButton{ icon.source: "qrc:/Icon/Note-Black/16x16/bold.png" focusPolicy: Qt.TabFocus checkable: true checked: document.bold action: actionBold ToolTip.text: qsTr("Gras") ToolTip.visible: hovered ToolTip.delay: delayToolTip ToolTip.timeout: timeOutToolTip } ToolButton{ icon.source: "qrc:/Icon/Note-Black/16x16/italic.png" focusPolicy: Qt.TabFocus checkable: true checked: document.italic action: actionItalic ToolTip.text: qsTr("Italic") ToolTip.visible: hovered ToolTip.delay: delayToolTip ToolTip.timeout: timeOutToolTip } ToolButton{ icon.source: "qrc:/Icon/Note-Black/16x16/underline.png" font.family: "fontello" focusPolicy: Qt.TabFocus checkable: true checked: document.underline action: actionUnderline ToolTip.text: qsTr("Surligné") ToolTip.visible: hovered ToolTip.delay: delayToolTip ToolTip.timeout: timeOutToolTip } ToolSeparator{} ToolButton{ icon.source: "qrc:/Icon/Note-Black/16x16/barre.png" focusPolicy: Qt.TabFocus checkable: true checked: document.strikeout onClicked: document.strikeout = !document.strikeout ToolTip.text: qsTr("Barré") ToolTip.visible: hovered ToolTip.delay: delayToolTip ToolTip.timeout: timeOutToolTip } //} } } } */ ColumnLayout{ id: grid anchors.fill: parent // columns: 2 Rectangle{ id: black Layout.fillHeight: true Layout.fillWidth: true Layout.minimumHeight: 16 Row{ anchors.fill: parent ToolButton{ icon.source: "qrc:/Icon/Note-Black/16x16/file.png" action: actionOpen ToolTip.text: qsTr("Ouvrire") ToolTip.visible: hovered ToolTip.delay: delayToolTip ToolTip.timeout: timeOutToolTip } ToolButton{ icon.source: "qrc:/Icon/Note-Black/16x16/save.png" action: actionSave ToolTip.text: qsTr("Enregistre") ToolTip.visible: hovered ToolTip.delay: delayToolTip ToolTip.timeout: timeOutToolTip } ToolButton{ icon.source: "qrc:/Icon/Note-Black/16x16/save_as.png" action: actionSaveAs ToolTip.text: qsTr("Enregistre sous..") ToolTip.visible: hovered ToolTip.delay: delayToolTip ToolTip.timeout: timeOutToolTip } ToolSeparator{} ToolButton{ icon.source: "qrc:/Icon/Note-Black/16x16/redo.png" action: actionRedo ToolTip.text: qsTr("Annuler") ToolTip.visible: hovered ToolTip.delay: delayToolTip ToolTip.timeout: timeOutToolTip } ToolButton{ icon.source: "qrc:/Icon/Note-Black/16x16/undo" action: actionUndo ToolTip.text: qsTr("Refaire") ToolTip.visible: hovered ToolTip.delay: delayToolTip ToolTip.timeout: timeOutToolTip } ToolSeparator{} ToolButton{ icon.source: "qrc:/Icon/Note-Black/16x16/cut.png" action: actionCut ToolTip.text: qsTr("Couper") ToolTip.visible: hovered ToolTip.delay: delayToolTip ToolTip.timeout: timeOutToolTip } ToolButton{ icon.source: "qrc:/Icon/Note-Black/16x16/copy.png" action: actionCopy ToolTip.text: qsTr("Copier") ToolTip.visible: hovered ToolTip.delay: delayToolTip ToolTip.timeout: timeOutToolTip } ToolButton{ icon.source: "qrc:/Icon/Note-Black/16x16/paste.png" action: actionPaste ToolTip.text: qsTr("Coller") ToolTip.visible: hovered ToolTip.delay: delayToolTip ToolTip.timeout: timeOutToolTip } ToolButton{ icon.source: "qrc:/Icon/Note-Black/16x16/erase.png" action: actionErase ToolTip.text: qsTr("Effacer") ToolTip.visible: hovered ToolTip.delay: delayToolTip ToolTip.timeout: timeOutToolTip } ToolSeparator{} ToolButton{ icon.source: "qrc:/Icon/Note-Black/16x16/select_all.png" action: actionSelectAll ToolTip.text: qsTr("Sélectionner tout") ToolTip.visible: hovered ToolTip.delay: delayToolTip ToolTip.timeout: timeOutToolTip } ToolButton { id: moreToolBar icon.source: "qrc:/Icon/Note-Black/16x16/showbar.png" action: actionShowBar // Layout.alignment: Qt.AlignRight ToolTip.text: moreToolTip ToolTip.visible: hovered ToolTip.delay: delayToolTip ToolTip.timeout: timeOutToolTip } } } /* Rectangle{ id: yellow Layout.fillWidth: true Layout.fillHeight: true } Rectangle{ id: red Layout.fillWidth: true Layout.fillHeight: true }*/ } } FileDialog { id: openDialog fileMode: FileDialog.OpenFile selectedNameFilter.index: 1 nameFilters: ["Fichiers Texte (*.txt)", "Fichiers Web HTML(*.html *.htm)", "Filchiers Mardkdown (*.md *.markdown)"] currentFolder: StandardPaths.writableLocation(StandardPaths.DocumentsLocation) onAccepted: document.load(selectedFile) } FileDialog{ id: saveDialog fileMode: FileDialog.SaveFile defaultSuffix: document.fileType nameFilters: openDialog.nameFilters selectedNameFilter.index: document.fileType === "txt" ? 0 : 1 currentFolder: StandardPaths.writableLocation(StandardPaths.DocumentsLocation) onAccepted: document.saveAs(selectedFile) } MessageDialog { title: qsTr("Erreur") id: errorDialog } MessageDialog { id: warringDialog property bool m_close: false title: qsTr("Attention") informativeText: qsTr("Le document a été modifie\nVoulez-vous enregistre les changements?") buttons: MessageDialog.Yes | MessageDialog.No onAccepted: { savefunc() } onRejected: { m_close = true onBackStack() } } function loads(string) { document.load(string) } function savefunc() { if(document.fileName === ("untitled.txt")) { saveDialog.open() } else { console.log(document.fileName) document.save(document.fileName) } } function onBackStack() { if(document.modified) { warringDialog.open() if(warringDialog.m_close) stack.pop() } else stack.pop() } function onSearch() { search.visible = true } function onShowBar() { row2.visible=true moreToolBar.icon.source="qrc:/Icon/Note-Black/16x16/hidebar.png" moreToolBar.action=actionHideBar moreToolTip = qsTr("Moins") } function onHideBar() { row2.visible=false moreToolBar.icon.source="qrc:/Icon/Note-Black/16x16/showbar.png" moreToolBar.action=actionShowBar moreToolTip = qsTr("Plus") } } thanks in advance