Yes I guess I am still thinking procedural way. Do you have any recommendation book/documents to understand declarative programming?
Thank you for your helps. Sina 2016-04-26 13:07 GMT+03:00 Dmitry Volosnykh <dmitry.volosn...@gmail.com>: > > Well the problem is ... while using QFileDialog's and QMessageBox's > static functions, program can continue to flow from where those functions > called. > > This is declarative language. Spaghetti code is unavoidable %) You'll have > to do a mind-shift to use QML as it was designed. > > On Tue, Apr 26, 2016 at 1:03 PM Dmitry Volosnykh < > dmitry.volosn...@gmail.com> wrote: > >> > FileDialog's open function would not return the file URL while >> QFileDialog::getSaveFileName would return it >> While FileDialog.open() does not return anythying, you still able to get >> file's URL via fileUrl property of FileDialog instance like follows: >> >> FileDialog { >> id: fileDialog >> onAccepted: console.log("User selected file:", fileUrl) >> } >> >> Situation with MessageBox is mostly the same. This QML type provides, >> basically, the same functionality as its C++ counterpart. So you may >> perform different actions upon receiving different signals which correspond >> to buttons that user may press (Not suprisingly that these signals are >> named exactly the same as button enum's that are returned as an int result >> of QMessageBox::exec() method). So, here you are: >> >> MessageBox { >> id: messageBox >> onYes: console.log("User pressed Yes button") >> onNo: console.log("User pressed No button") >> onApply: console.log("User pressed Apply button") >> // etc ... >> } >> >> On Tue, Apr 26, 2016 at 12:36 PM Sina Dogru <sinado...@gmail.com> wrote: >> >>> Hi, Sina. You may try to wrap those C++-side static methods with >>>> intermediary class that is exposed to QML in a usual way. As far as I >>>> remember there should be some API for opening files as well as for message >>>> notifications. But that will require you to import QtQuick.Controls module. >>>> Please, refer to official documentation for more precise name of the >>>> module. >>>> >>> Hello Dmitry, thank you for respond. I think you are talking about the >>> FileDialog QML type and MessageBox. But my problem is, when I call a static >>> method of the intermediary class which calls FileDialog's open function >>> would not return the file URL while QFileDialog::getSaveFileName would >>> return it. So to do it, QML would need to call another function onAccepted >>> handler and it would need to know which function it needs to call. >>> >>> I mean, for example consider a situation where a C++ class process a >>> user input carried from QML to C++. If the user input is incorrect, I would >>> need to ask the user some options. So I pop up a message box which presents >>> the options to the user with this intermediary class. But when I do this, I >>> would lose the flow of the program. So when the user responds to the >>> message box, I would need to call another C++ function to process. But >>> since QMessageBox's and QFileDialog's static functions create their own >>> event loop and returns the data, I would be able to process new data >>> without loosing the current stack and flow of the program. >>> >>> So QMessageBox and QFileDialog's static functions are not need to know >>> on their event handlers, because they just returns the information that is >>> needed so program can continue from the same stack. >>> >>> Like I said, I am not so exprienced with programming. I might be >>> misjudging your advice or QML and C++ seperation. >>> >>> >>
_______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest