Announcement

Collapse
No announcement yet.

AARRRGGG, Final Draft

Collapse
This topic is closed.
X
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    #16
    Originally posted by jlittle View Post
    ( This is hard to say without sounding patronizing, and that's not my intention at all; I wish to give a warning.) C++ is very hard to learn, let alone to be productive with. When I worked with it I came to the opinion that most programmers I knew would not cope with its complexities. This was certainly borne out by the code I had to maintain. It has on paper improved since then, but I doubt there's much difference in ease of learning.
    Far better, learn Python or Ruby.

    Regards, John Little
    I'm aware that C++ is more difficult than my previous programming language, Visual BASIC 6, and other languages, but LibreOffice Writer is written in C++. Therefore, I have to use it. LO Writer is really cool as is, but there are a few things I would like to change in it. They're simple things. I think I can do it. I just need to build up some skill first. Fortunately, there appears to be a wealth of material online about the language, including plenty of sample code. That was true of VB also, and was a major factor why I chose that language before. I had an entire library of VB books and materials. I'll be able to get information on anything I need. Plus, there are good online forums where you can ask questions. I've purchased my first C++ book, Jumping into C++ by Alex Allain. The book does not assume you know anything about the language or even about programming. It takes you by the hand from the very beginning. It's a good book to start with, and I can learn from there. I'm not expecting it to be easy or to gain instant expertise, but step by step I'll get this.

    Originally posted by MoonRise View Post
    Python has been good to me. Have Pascal. Modula and VB background and Python felt so comfortable like my past languages. I've even been able to turn one project into a Windows EXE. Crated a quick installer for it and wow! Even Easy GUI was nice. Though I wish I went with 3.0 instead of 2.7 but one piece I needed for my project wasn't ported over yet, at least I couldn't find it. Either way, Python has been wonderful, for me.
    I've also considered Python because a lot of Linux applications are written in it, and there's also a lot of information available about it. I've also considered Gambas because it's the most VB-like programming language/IDE for Linux. First things first, however. I need to build up enough C++ skill to be able to tinker with LibreOffice Writer. Maybe I'll consider some other languages after that.

    Originally posted by GreyGeek View Post
    If you've programmed in VB then you should have no trouble with C++, as long as you use a good GUI RAD tool, like Qtcreator. There are two good ways to install it and the Qt API that, IMO, is the best way to utilize C++.
    1) From the repo install qtcreator. It will also install the qt4-designer, qt4-assistant, qt4-doc (which is VERY good and thorough) and the other necessary files. Be sure build-essential is installed. For bells and whistles select all the recommends as well. For a back end database install PostgreSQL and and excellent admin tool, pgadmin3. The environmental vars are automatically set. You can finalize the config in the qtcreator options.

    2) Or, from the repo, install qt-sdk. It automatically pulls in build-essential and the other qt4 tools mentioned above. Then install PostgreSQL and pgadmin3.

    (The Ubuntu qt sdk ppa is here: https://launchpad.net/~ubuntu-sdk-team/+archive/ppa)

    The qt4 doc (or qt5 if you install it) comes with a complete set of examples for each of the various controls, features, etc. The docs are as good, if not the best, as an I've encountered in 40 yrs of programming.

    Using VB you are used to creating a form and dropping on menus, buttons, controls, etc., then editing the properties of those controls or editing the methods created when those controls are dropped onto the form. It's the same with Qt4-designer.

    C++ source files generally have the "startup" program, main.cpp, and other headers (*.h) and source files (*.cpp) and resource files (icons, jpgs, i18n declarations, etc...). Simple program often are contained within the main.cpp, but more complicated programs usually use main.cpp to set up the environment, backends, etc..., and then call the main program. Qt's API included Q_OBJECT, a class which is added to user defined classes to automatically destroy open pointers, do memory garbage clean up, etc....

    In my work environment Windows was the client and Windows servers made up the network. I used Linux as my workstation (dual boot) because I could develop about 3 to 5 times faster in Linux (SuSE 6.4) using Kate and KDbg than in XP SP3 using MS VS C++ 2003. I also used PostgreSQL as the back end (on a server in my office) and I used compiler defines to switch code in or out depending on which back end was being used; Oracle or PostgreSQL. PostgreSQL was (is?) 95% compatible with Oracle, and I didn't have to use an Oracle license slot.

    Bottom line: programming using the Qt API was a joy and allowed me to unleash my creativity. IOW, the tool didn't constrain what I wanted to do and how I wanted to do it.
    Yes, I've got QT4 already installed. It's one of the IDEs I've been considering. From your description it sounds good. Back in my VB days, I always considered learning C++, but never did because I was always able to create what I wanted in VB. VB is now obsolete and I need something else. I actually had the Microsoft C++ IDE because I had the whole Visual Studio suite. However, the C++ IDE that I really liked in Windows was the Borland C++ builder. As in VB, you could use its RAD tool to quickly drag and drop your menus, buttons, drop-boxes, etc. together and then just plug in your code. I always thought if I ever programmed in C++, I would use the Borland Builder. For now, I'm going to use the Code Blocks IDE simply because that's the one used by Alex Allain in his C++ book that I just bought. I'm going to go through all his lessons and code all his examples so that I learn. After I get through that material, I'll likely branch out into Qt4-designer, especially if it's so much like the Borland C++ Builder as you describe.

    Once I've gotten through the Allain book, I'll decide if it makes sense to learn anything else like Python or Gambas. It might be that I'm loving C++ and don't want to use anything else. Or maybe I'll hate it and just use it for making the few changes to LO Writer that I want, and then move to Python or Gambas. Or maybe I'll find some program written in Python and chose to learn it so that I can tinker with it. I do know CherryTree is written in Python. What's cool about Linux is that you can actually do this. I could not lift up the hood of Microsoft Word and change the source code (though I could do some things with VBA).
    Kubuntu 22.04 (desktop & laptop), Windows 7 &2K (via VirtualBox on desktop PC)
    ================================

    Comment


      #17
      Python is great for pasting scripts together. I experimented with it before I decided on using Qt. The best tool for creating a GUI using Python is called Boa-Constructor. My experience with it is that its development lagged severely, is very slow, it is made of several components written by different authors and version syncing is sometimes difficult or impossible. My biggest problem, however, was that when the Python code created by the GUI I developed had "DO NOT EDIT, this code is regenerated with each compile" warnings in them, exactly where I needed to place the functionality I wanted to add. Other windows components, like wxWindows, also had version compatibility. Currently, I doubt that Boa or wxWindow (or wxWidgets, or what ever it is now called) is even compatible with Python 3. And, wxWindows (and Boa's) forms and controls are very primitive.

      I've never tried code::blocks but I suspect that trying to get two different pieces of software working together will be as much of a version sync problem with code:blocks and C++and Qt as it was with Python+Boa or wxWindows. Also, QtCreator has built-in context sensitive help and code assistance. When you right mouse on a control on a form, ALL the properties and methods associated with that control become immediately available for selection in the dropdown combo boxes that appear. You don't have to memorize switches and parameters of classes or controls, even the ones you create. The Qt Doc is also available with F1 and is context sensitive. That feature may be present in code::blocks or some other tool, but it can't be as well integrated as in QtCreator.

      The fellow who replaced me when I retired in 2008 was familiar with Eclipse and was using its C++ and Qt plugin to maintain the app from which I took snippets and posted below. However, since QtCreator reached version 2 the qt plugin for Eclipse has not been updated since 2010 and I couldn't find it on the web just now, so it too is having version sync problems.
      http://www.eclipse.org/cdt/

      In my experience, not going with a tool that was designed to work with and be fully integrated with Qt is asking for a world of hurt, to say nothing of the inconveniences.

      The best forum on the web for Qt help is here: http://www.qtcentre.org

      Here is an example video tutorial on how to make a simple GUI app using Qt4. (Qt5 is somewhat different)


      The video shows graphically setting "signals" and "slots", which is a key technology in Qt. Signals are basically events that are reacted to in the application event loop, mainly keyboard clicks and mouse events. An emitted signal can be received by more than one slot, and a slot can receive more than one signal. What actually happens is under your control. Slots are generally procedures created automatically by the Qt-Designer tool or programmatically by the user, and the "signals" become parameters passed to the procedure. Either way, the Qt class which links them is called "connect". You can turn signals and slots on and off within a procedure or between procedures.

      For complete control I bypassed the automatic coding of the designer and created my signals, slots, headers and procedures manually. Here are some examples that are executed when a form I wrote is instantiated:
      Code:
          // Initialize the signal and slot connections 
          // ui.btnSOMENAME are buttons, ui.leSOMENAME are line edit text boxes, ui.cboSOMENAME are combo boxes
          // ui.tabSOMENAME are tabs, ui.gridSOMENAME are grids
          // Buttons are usually connected to specific actions performed in specific functions, which are 
          // called by the SLOT.
          connect(ui.btnSearch,         SIGNAL(clicked()),        this, SLOT(searchAll()));
          connect(ui.btnQUIT,           SIGNAL(clicked()),        this, SLOT(QuitClicked()));
          connect(ui.btnEditProperty,   SIGNAL(clicked()),        this, SLOT(editProperty()));
          connect(ui.btnUndoProperty,   SIGNAL(clicked()),        this, SLOT(undoProperty()));
          connect(ui.btnNewProperty,    SIGNAL(clicked()),        this, SLOT(newProperty()));
          connect(ui.btnDeleteProperty, SIGNAL(clicked()),        this, SLOT(deleteProperty()));
          connect(ui.btnSWAP,           SIGNAL(clicked()),        this, SLOT(persinfoSwap()));
          connect(ui.btnEditPersInfo,   SIGNAL(clicked()),        this, SLOT(editPersInfo()));
      ...
          // line edit signals on lost focus, allowing edit checks and cursor flow control
          connect(ui.leHEC,               SIGNAL(editingFinished()),    this, SLOT(toggleServiceDates()));
          connect(ui.leSSSN,              SIGNAL(editingFinished()),    this, SLOT(toggleSYOB()));
          connect(ui.leBDate,             SIGNAL(editingFinished()),    this, SLOT(BDateLostFocus()));
      ...
         // grid signals  "Index" allows access to the specific row and column clicked
          connect(ui.gridPersInfo,      SIGNAL(clicked(QModelIndex)), this, SLOT(displaySelectedPersInfo( QModelIndex )));
          connect(ui.gridMultiProp,     SIGNAL(clicked(QModelIndex)), this, SLOT(displaySelectedMultiProp( QModelIndex )));
      Setting up hot keys is easy. Here a couple of buttons have their hot key set:
      Code:
          ui.btnEditProperty->setText("Edit &Z");   //  Alt+Z becomes a hot key
          ui.btnEditPersInfo->setText("&Edit");  // Alt+E is the hot key
      You can re-arrange the tab order of controls on a page (or tab) using the Qt-Designer, or you can set them yourself in the class instantiation:
      // Property tab order set here
      QWidget::setTabOrder(ui.cboCountyName,ui.txtLegal) ;
      QWidget::setTabOrder(ui.txtLegal, ui.leParcelID);
      QWidget::setTabOrder(ui.leParcelID,ui.leTaxDistric t);
      QWidget::setTabOrder(ui.leTaxDistrict,ui.leHomeVal ue);
      QWidget::setTabOrder(ui.leHomeValue,ui.btnEditProp erty);
      QWidget::setTabOrder(ui.btnEditProperty,ui.leSearc h);
      ...
      Like I said, programming in Qt4 was a blast and a joy when I was using MSVSC++ 6.0 with the Qt plugin, or with Kate and KDbg, but since I began using QtCreator (in possible support of the fellow who replaced me) that euphoria only increased.
      Last edited by GreyGeek; Jun 04, 2014, 10:53 AM.
      "A nation that is afraid to let its people judge the truth and falsehood in an open market is a nation that is afraid of its people.”
      – John F. Kennedy, February 26, 1962.

      Comment


        #18
        The Qt 5.1 API has added what is called Qt Quick.
        Here is a video demonstrating its ability and speed (using QtCreater):
        "A nation that is afraid to let its people judge the truth and falsehood in an open market is a nation that is afraid of its people.”
        – John F. Kennedy, February 26, 1962.

        Comment


          #19
          Originally posted by GreyGeek View Post
          Python is great for pasting scripts together. I experimented with it before I decided on using Qt. The best tool for creating a GUI using Python is called Boa-Constructor. My experience with it is that its development lagged severely, is very slow, it is made of several components written by different authors and version syncing is sometimes difficult or impossible. My biggest problem, however, was that when the Python code created by the GUI I developed had "DO NOT EDIT, this code is regenerated with each compile" warnings in them, exactly where I needed to place the functionality I wanted to add. Other windows components, like wxWindows, also had version compatibility. Currently, I doubt that Boa or wxWindow (or wxWidgets, or what ever it is now called) is even compatible with Python 3. And, wxWindows (and Boa's) forms and controls are very primitive.

          I've never tried code::blocks but I suspect that trying to get two different pieces of software working together will be as much of a version sync problem with code:blocks and C++and Qt as it was with Python+Boa or wxWindows. Also, QtCreator has built-in context sensitive help and code assistance. When you right mouse on a control on a form, ALL the properties and methods associated with that control become immediately available for selection in the dropdown combo boxes that appear. You don't have to memorize switches and parameters of classes or controls, even the ones you create. The Qt Doc is also available with F1 and is context sensitive. That feature may be present in code::blocks or some other tool, but it can't be as well integrated as in QtCreator.

          The fellow who replaced me when I retired in 2008 was familiar with Eclipse and was using its C++ and Qt plugin to maintain the app from which I took snippets and posted below. However, since QtCreator reached version 2 the qt plugin for Eclipse has not been updated since 2010 and I couldn't find it on the web just now, so it too is having version sync problems.
          http://www.eclipse.org/cdt/

          In my experience, not going with a tool that was designed to work with and be fully integrated with Qt is asking for a world of hurt, to say nothing of the inconveniences.

          The best forum on the web for Qt help is here: http://www.qtcentre.org

          Here is an example video tutorial on how to make a simple GUI app using Qt4. (Qt5 is somewhat different)


          The video shows graphically setting "signals" and "slots", which is a key technology in Qt. Signals are basically events that are reacted to in the application event loop, mainly keyboard clicks and mouse events. An emitted signal can be received by more than one slot, and a slot can receive more than one signal. What actually happens is under your control. Slots are generally procedures created automatically by the Qt-Designer tool or programmatically by the user, and the "signals" become parameters passed to the procedure. Either way, the Qt class which links them is called "connect". You can turn signals and slots on and off within a procedure or between procedures.

          For complete control I bypassed the automatic coding of the designer and created my signals, slots, headers and procedures manually. Here are some examples that are executed when a form I wrote is instantiated:
          Code:
              // Initialize the signal and slot connections 
              // ui.btnSOMENAME are buttons, ui.leSOMENAME are line edit text boxes, ui.cboSOMENAME are combo boxes
              // ui.tabSOMENAME are tabs, ui.gridSOMENAME are grids
              // Buttons are usually connected to specific actions performed in specific functions, which are 
              // called by the SLOT.
              connect(ui.btnSearch,         SIGNAL(clicked()),        this, SLOT(searchAll()));
              connect(ui.btnQUIT,           SIGNAL(clicked()),        this, SLOT(QuitClicked()));
              connect(ui.btnEditProperty,   SIGNAL(clicked()),        this, SLOT(editProperty()));
              connect(ui.btnUndoProperty,   SIGNAL(clicked()),        this, SLOT(undoProperty()));
              connect(ui.btnNewProperty,    SIGNAL(clicked()),        this, SLOT(newProperty()));
              connect(ui.btnDeleteProperty, SIGNAL(clicked()),        this, SLOT(deleteProperty()));
              connect(ui.btnSWAP,           SIGNAL(clicked()),        this, SLOT(persinfoSwap()));
              connect(ui.btnEditPersInfo,   SIGNAL(clicked()),        this, SLOT(editPersInfo()));
          ...
              // line edit signals on lost focus, allowing edit checks and cursor flow control
              connect(ui.leHEC,               SIGNAL(editingFinished()),    this, SLOT(toggleServiceDates()));
              connect(ui.leSSSN,              SIGNAL(editingFinished()),    this, SLOT(toggleSYOB()));
              connect(ui.leBDate,             SIGNAL(editingFinished()),    this, SLOT(BDateLostFocus()));
          ...
             // grid signals  "Index" allows access to the specific row and column clicked
              connect(ui.gridPersInfo,      SIGNAL(clicked(QModelIndex)), this, SLOT(displaySelectedPersInfo( QModelIndex )));
              connect(ui.gridMultiProp,     SIGNAL(clicked(QModelIndex)), this, SLOT(displaySelectedMultiProp( QModelIndex )));
          Setting up hot keys is easy. Here a couple of buttons have their hot key set:
          Code:
              ui.btnEditProperty->setText("Edit &Z");   //  Alt+Z becomes a hot key
              ui.btnEditPersInfo->setText("&Edit");  // Alt+E is the hot key
          You can re-arrange the tab order of controls on a page (or tab) using the Qt-Designer, or you can set them yourself in the class instantiation:


          Like I said, programming in Qt4 was a blast and a joy when I was using MSVSC++ 6.0 with the Qt plugin, or with Kate and KDbg, but since I began using QtCreator (in possible support of the fellow who replaced me) that euphoria only increased.
          Thanks for your detailed explanation. It looks like QT Creator is indeed the way to go. It looks a lot like Borland Creator. I'm still going to use Code Blocks when going through the Alex Allain book simply because it's what the author uses. It will be only for making the sample applications that I don't intend to develop into anything major. It looks like the Linux stuff is coded in simple nano anyway. It's the Windows examples that are done in Code Blocks.

          I can see from the videos that there's no need for me to be intimidated by C++ code. It's considered harder than the VB that I know, but I'm sure it's just a matter of getting to know it. I can already see that an opening squiggly bracket means "Sub" and a closing one means "End Sub." Now I can use Youtube videos to learn a ton. Youtube did not exist back when I learned VB. This is a rational subject that I'm capable of learning. It's not space alien physics.
          Kubuntu 22.04 (desktop & laptop), Windows 7 &2K (via VirtualBox on desktop PC)
          ================================

          Comment


            #20
            An update: GreyGeek, that guy's videos are excellent. He has a whole series on QT, and another whole series on C++. I have a browser plug-in for downloading Youtube videos. I've downloaded all this videos and plan to go through all of them. They help a lot. This is great. I didn't have videos to help me when I learned VB. I have no doubt I'm going to be able to get up and running in this language.
            Kubuntu 22.04 (desktop & laptop), Windows 7 &2K (via VirtualBox on desktop PC)
            ================================

            Comment


              #21
              Tom_ZeCat, I forgot to mention that the open source version of the Qt API is at http://qt-project.org/downloads

              It also has a forum. That site wasn't around when I was coding with Qt at work, hence my reference to QtCentre as the best support site. The qt-project forum may be better, but I've never registered there.

              Yesterday I used the online installer version of the 64bit Linux 5.3 SDK: http://download.qt-project.org/offic...0-3-online.run
              to install the 5.3 Qt API. It installed under /opt, which is the classic location for that tool. I also selected the additional tools, extensions, etc... that doubled the size of the download to 1.2GB. It included the templates and tools for android, win8 and OSX development for tablets and smart phones. The online installer also put the new API and tools into the KDE menu structure on my Trusty installation.

              I wanted to compare the newest 5.3 version with the 4.8 version of the SDK that is still in the repo. IMO, the difference is significant enough to merit the 5.3 install. And, it never hurts to use the latest tools! When you open the 5.3 version of QtCreator it presents you with three options: Projects, Examples and Tutorials. The Examples and Tutorial buttons display graphical links to those topics. The examples, complete with code are part of the installation, as you'd suspect.

              As far as learning C++ ... my experience was mixed. In my consulting business I, too, had used VB as a tool to write software. Back in 1992, when Borland's C++ for Windows came out, I tried it. I found it unbelievably complex to write a simple "Hello World" program. 1,500 lines of code! Later, in 1999 I tried using Tom Swan's 1999 book, "GNU C++ for Linux" to learn C++ because I had adopted Linux a year earlier, in May of 1998, and the gnu g++ compiler was free with it. But, I needed a RAD tool in order to be competitive with my project bids, and neither Borland's tool or C++ under Linux created a RAD environment. I began using various dBase tools and clones, and Advanced Arev.

              My last client, the Nebraska Dept of Revenue, gave me an employment offer in 1997 that my wife wouldn't let me refuse ( ) because it would bring me home on evenings and weekends, instead of being gone for weeks at a time coding a project. They were using VFP, which I found to be a quick learn, but when MS dumped it for .NET around 2004 the Dept of Rev had to look for another tool to replace it. That is what got my search, which lead to Qt, under way. Fortunately, I was assigned by the dept to spend dept time looking for and testing alternatives. It was a programmer's dream job! In the course of a year I played with several GUI RAD tools built around several languages, including Java, Python and C++. Both proprietary and open source.

              A note about the difference between the open source version and the proprietary version of Qt. They are the same, except that the proprietary version also included pre-compiled drivers for several proprietary databases, like Oracle. The $1,500US proprietary version (from Trolltech at the time) also included a year of email phone support during business hours. The renewal fee was $750/yr. The entire cost of the proprietary version is basically for support. I told my bosses that open source software support is free and of equal quality, but their mentality was that if they couldn't pay $$$ for it then it must not be good. Trolltech support was excellent and worth the money. I can't speak to Digia, who now owns the commercial version of Qt.

              I hadn't studied or even played with C++ since I first studied it the second time in 1999 and never really got proficient with it. I was 58 at the time. You know the tale about old dogs and new tricks. When I got around to trying Qt in 2004 I was 63 and the fear of not being able to learn C++ was palpable. Did I have the mental chops to learn C++ and Qt at a professional level? I jumped in using the open source version and using the sample code and I was surprised to find it to be as easy to learn as VB. In fact, I found myself writing workable test apps using Qt just while studying the examples. Qt had just passed through a version change, from Qt3 to Qt4, and the difference was astronomical. Qt4 was a modular API using standard C++ development methodologies. Qt3 was a tool which forced all development through the designer, which stunk worse than Python and Boa. If Trolltech hadn't released Qt4 when they did I probably would have settled on some Java GUI RAD tool, as much as I hate Java because it reminds me of COBOL.

              My very first real application using C++ and Qt4 is called "Homested", and it is used to track applicants to Nebraska's property tax abatement for retired folks. Ten years later it is still being used.

              So, what I am saying is that I learned code in C++ and how to use the Qt API at the same time, when I was 63. That's how easy it was. Have fun!
              Last edited by GreyGeek; Jun 06, 2014, 07:54 AM.
              "A nation that is afraid to let its people judge the truth and falsehood in an open market is a nation that is afraid of its people.”
              – John F. Kennedy, February 26, 1962.

              Comment


                #22
                Originally posted by GreyGeek View Post
                Tom_ZeCat, I forgot to mention that the open source version of the Qt API is at http://qt-project.org/downloads

                It also has a forum. That site wasn't around when I was coding with Qt at work, hence my reference to QtCentre as the best support site. The qt-project forum may be better, but I've never registered there.

                Yesterday I used the online installer version of the 64bit Linux 5.3 SDK: http://download.qt-project.org/offic...0-3-online.run
                to install the 5.3 Qt API. It installed under /opt, which is the classic location for that tool. I also selected the additional tools, extensions, etc... that doubled the size of the download to 1.2GB. It included the templates and tools for android, win8 and OSX development for tablets and smart phones. The online installer also put the new API and tools into the KDE menu structure on my Trusty installation.

                I wanted to compare the newest 5.3 version with the 4.8 version of the SDK that is still in the repo. IMO, the difference is significant enough to merit the 5.3 install. And, it never hurts to use the latest tools! When you open the 5.3 version of QtCreator it presents you with three options: Projects, Examples and Tutorials. The Examples and Tutorial buttons display graphical links to those topics. The examples, complete with code are part of the installation, as you'd suspect.

                As far as learning C++ ... my experience was mixed. In my consulting business I, too, had used VB as a tool to write software. Back in 1992, when Borland's C++ for Windows came out, I tried it. I found it unbelievably complex to write a simple "Hello World" program. 1,500 lines of code! Later, in 1999 I tried using Tom Swan's 1999 book, "GNU C++ for Linux" to learn C++ because I had adopted Linux a year earlier, in May of 1998, and the gnu g++ compiler was free with it. But, I needed a RAD tool in order to be competitive with my project bids, and neither Borland's tool or C++ under Linux created a RAD environment. I began using various dBase tools and clones, and Advanced Arev.

                My last client, the Nebraska Dept of Revenue, gave me an employment offer in 1997 that my wife wouldn't let me refuse ( ) because it would bring me home on evenings and weekends, instead of being gone for weeks at a time coding a project. They were using VFP, which I found to be a quick learn, but when MS dumped it for .NET around 2004 the Dept of Rev had to look for another tool to replace it. That is what got my search, which lead to Qt, under way. Fortunately, I was assigned by the dept to spend dept time looking for and testing alternatives. It was a programmer's dream job! In the course of a year I played with several GUI RAD tools built around several languages, including Java, Python and C++. Both proprietary and open source.

                A note about the difference between the open source version and the proprietary version of Qt. They are the same, except that the proprietary version also included pre-compiled drivers for several proprietary databases, like Oracle. The $1,500US proprietary version (from Trolltech at the time) also included a year of email phone support during business hours. The renewal fee was $750/yr. The entire cost of the proprietary version is basically for support. I told my bosses that open source software support is free and of equal quality, but their mentality was that if they couldn't pay $$$ for it then it must not be good. Trolltech support was excellent and worth the money. I can't speak to Digia, who now owns the commercial version of Qt.

                I hadn't studied or even played with C++ since I first studied it the second time in 1999 and never really got proficient with it. I was 58 at the time. You know the tale about old dogs and new tricks. When I got around to trying Qt in 2004 I was 63 and the fear of not being able to learn C++ was palpable. Did I have the mental chops to learn C++ and Qt at a professional level? I jumped in using the open source version and using the sample code and I was surprised to find it to be as easy to learn as VB. In fact, I found myself writing workable test apps using Qt just while studying the examples. Qt had just passed through a version change, from Qt3 to Qt4, and the difference was astronomical. Qt4 was a modular API using standard C++ development methodologies. Qt3 was a tool which forced all development through the designer, which stunk worse than Python and Boa. If Trolltech hadn't released Qt4 when they did I probably would have settled on some Java GUI RAD tool, as much as I hate Java because it reminds me of COBOL.

                My very first real application using C++ and Qt4 is called "Homested", and it is used to track applicants to Nebraska's property tax abatement for retired folks. Ten years later it is still being used.

                So, what I am saying is that I learned code in C++ and how to use the Qt API at the same time, when I was 63. That's how easy it was. Have fun!
                Thanks for your inspiring story. I'm 49 and it did enter my mind that maybe it might be harder to learn now that I'm older. Plus, C++ has a reputation of being a hard language. However, I stubbornly refuse to believe that I can't learn something that I want to learn. For the past year and a half I've been busy learning French. I'm making excellent progress. I learned German back in my 20s. I learned it well. Now I think I'm learning French faster than I learned German. It's because I learned a language before and now I know how to learn one. Plus, I have a ton of technology that I did not have back in the 80s. Now I've got Skye and programs like Anki.

                Bucky's C++ tutorials are quite good. I've been using them instead of that book I bought, though I probably will also use it. I've gotten through the first 10 tutorials. They're the C++ ones, not the QT ones. So far they're all command-line programs, as if they were programs for DOS. That's okay. It's introducing me to the concepts. A lot of the stuff is the same as VB. He'll call it something else, but I'll say, "I recognize that. It's a select case statement." Declaring variables is a different syntax, but the concept is the same. I may re-write some of my old VB software in C++ so that I can have both a Linux and a Windows version, and maybe even a Mac version. Soon I'll be installing Windows 2000 under VirtualBox so that I can run Visual BASIC 6 and look at my old code. That will make it easier to rewrite the code in C++.

                Don't let anyone tell you that you can't learn something while older. One of the reasons I'm learning French is I saw a study that said learning a language keeps your mind active and you're less likely to have declining mental faculties when older. That wasn't the only reason, of course. I'm using the language. It's going to be the same with C++. The big test will be if I can get good enough to understand the code of LibreOffice Writer, which I plan to modify.
                Kubuntu 22.04 (desktop & laptop), Windows 7 &2K (via VirtualBox on desktop PC)
                ================================

                Comment


                  #23
                  Originally posted by Tom_ZeCat View Post
                  Don't let anyone tell you that you can't learn something while older. One of the reasons I'm learning French is I saw a study that said learning a language keeps your mind active and you're less likely to have declining mental faculties when older.
                  That, and learning/playing a musical instrument. The common element seems to be challenging yourself!
                  samhobbs.co.uk

                  Comment


                    #24
                    Originally posted by Feathers McGraw View Post
                    That, and learning/playing a musical instrument. The common element seems to be challenging yourself!
                    I'm also going to try my hand at writing science fiction stories. I don't remember the article saying anything about that keeping cognitive function sharp, but I strongly suspect that it does. The other thing that really helps is physical activity. I do a yoga and cardiovascular workout every other day. I started it for the purpose of losing weight and getting my cholesterol under control, but I found it also helped me with my French studies. I started remembering things better. I'm just going by my experience and not a scientific study, but I'm sure it's true. I'd bet you anything there's a study that shows that regular physical activity helps with mental activity.
                    Kubuntu 22.04 (desktop & laptop), Windows 7 &2K (via VirtualBox on desktop PC)
                    ================================

                    Comment


                      #25
                      Originally posted by Tom_ZeCat View Post
                      .... I'd bet you anything there's a study that shows that regular physical activity helps with mental activity.
                      I'd wager that regardless of the issue you choose there are studies which support both sides. Take setting vs walking: http://news.stanford.edu/news/2014/a...ng-042414.html
                      Five minutes!? So, I spend a couple minutes walking to the mail box each day, and then add in 2 or 3 minutes walking back and forth between my computer chair and the fridge ....
                      "A nation that is afraid to let its people judge the truth and falsehood in an open market is a nation that is afraid of its people.”
                      – John F. Kennedy, February 26, 1962.

                      Comment

                      Working...
                      X