Qt Programming Language


  • Moderators

    @Annabelle You can just leave Qt Creator, it won't hurt to have it on there and you'll only save a bit of hard drive space not having it there.

    If you can't get just a mingw install with Qt, then you can always install mingw by itself. I would be careful to get the exact version used to compile whatever version of Qt you are using though, just to avoid issues.

    Here's a link to mingw:
    https://sourceforge.net/projects/mingw/files/

    Keep in mind installing it this way can be kind of complicated compared to just letting Qt's installer do it for you, but it works. I've used the mingw direct version for years.



  • @ambershark said in Qt Programming Language:

    @Annabelle You can just leave Qt Creator, it won't hurt to have it on there and you'll only save a bit of hard drive space not having it there.

    If you can't get just a mingw install with Qt, then you can always install mingw by itself. I would be careful to get the exact version used to compile whatever version of Qt you are using though, just to avoid issues.

    Here's a link to mingw:
    https://sourceforge.net/projects/mingw/files/

    Keep in mind installing it this way can be kind of complicated compared to just letting Qt's installer do it for you, but it works. I've used the mingw direct version for years.

    Is the coding for all the Qt widgets and parameters like buttons and checkboxes different from version to version (for example, 4.8 vs. 5.9)? I'm confused on that one!


  • Moderators

    @Annabelle Qt 4 to 5 would be different. Not hugely so, but definitely has some differences. 4 and 5 are not compatible at all.

    However versions during the same major version of Qt tend to be the same. Some things may get deprecated and some things may get added to the interface, but the core stuff stays the same. Your applications should always compile with newer Qt versions with the same major version number.



  • @ambershark said in Qt Programming Language:

    @Annabelle Qt 4 to 5 would be different. Not hugely so, but definitely has some differences. 4 and 5 are not compatible at all.

    However versions during the same major version of Qt tend to be the same. Some things may get deprecated and some things may get added to the interface, but the core stuff stays the same. Your applications should always compile with newer Qt versions with the same major version number.

    I went to the link you provided and got the latest version of mingw-get-setup.exe, however, when I open it, it takes me to an installation manager. Is that what's supposed to happen? Also, for some reason, I have to be connected to the Internet when opening the file. When I try the command line prompt "mingw-get --help", I get the following error. "mingw-get is not an operable program or recognized command". That's a bit strange, since the installation manager specifically asks me to enter that command to have access to its help file.


  • Moderators

    @Annabelle I haven't installed mingw in a long time so I'll let someone else help with the specifics of that. I'm not really a windows guy. I do almost exclusively posix oses like linux or mac.

    As for the error you got, that is because you are not in the directory with the mingw-get executable. That is a generic dos error that is telling you it has no idea what mingw-get is.



  • When I installed the Mingw-Get-Setup.exe file, it put some sort of Installation Manager on my computer, and I'm not sure what that does. Also, I'm still wondering how to put together the commands to compile a simple example of a program after wrtiing the code in Notepad++. I know one of you fellow members said something about "using ID's", and I'm not exactly sure what that means.


  • Moderators

    @Annabelle You can compile using cmake or qmake on the command line. It was covered above on how to do it by me and a few others.



  • @Allanis said in Qt Programming Language:

    @Annabelle Sorry, I was at work when I made my initial response to this thread. A more elaborate answer for you follows as I take it you are beginning in Qt and it may be difficult for you to look up resources.

    Given the scope of your project I think it will suffice to use a simple Qmake project file such as:

    myapp.pro

    TEMPLATE = app
    
    QT += widgets
    
    SOURCES += main.cpp \
        MainWindow.cpp \
        SpouseWidget.cpp
    
    HEADERS += \
        MainWindow.h \
        SpouswWidget.h
    
    OTHER_FILES += \
        anyotherfile.png
    

    You may need to make changes to this in order to fit the needs of your project, but this should be a good enough example for you.

    Once you have this in place, you can open up your favorite Command Line Interface (eg. cmd.exe for Windows).

    Type:

    qmake myapp.pro
    make
    

    Your compiler will generate a binary file for your application at this point.

    I hope this helps,
    Have fun.

    Would the header files be created in Notepad++ as well? So I'm guessing that the codes I write would be saved as .cpp files?



  • Read that post again. I explicitly say that the project file should be a. pro extension not a cpp file. You can write it in notepad++ that's fine.

    All the help you need has been clearly outlined in earlier posts by various people. Make sure you read them carefully and understand.



  • She seems to be wanted to be spoon feed all the answers versus looking and learning her answers. Jaws is more than capable of reading internet pages. She really needs to learn the basics before she can jump into QT.

    Use Cmake or Qmake on the command line.

    Use notepad++ to do all your .cpp and .h coding

    Me if i was blind and in your shoes i would use visual studio 2013 with jaws and learn all about how it works (google)



  • @sierdzio said in Qt Programming Language:

    Do you have the code ready, with a .pro file (it is a project definition file that Qt uses to compile applications)? If yes, then you can compile your project from the command line. Open cmd.exe (I guess you are on Windows operating system) and type:

    qmake yourprojectname.pro
    make
    

    That should be enough, assuming your environment is prepared (qmake and compiler are both set up in PATH system variable).

    As a side note, as far as I know there is an accessibility team working at Qt Company, I'm sure they will be happy to hear how both Qt and Qt Creator can be improved to help blind people. You can try reaching them at qt-creator@qt-project.org. You can also subscribe to Qt Creator mailing list here: http://lists.qt-project.org/mailman/listinfo/qt-creator.

    I tried typing the code qmake ceremonyscriptgenerator.pro
    make
    into the command prompt (cmd.exe), but I get the following error.
    "qmake" is not a valid internal or external command or operable program.
    Does anyone know why this error occurs? Do I have to have Qt Creator installed on my machine?


  • Moderators

    You don't need Qt Creator. Qt itself is enough, because qmake is part of it. If cmd complaints it can't find qmake it's probably because it is not in the PATH environment variable. I have not used Qt on Windows for a long time, but if nothing's hanged, you can probably run a Qt-provided command line which has the tools properly set up.

    Alternatively, with your current command line, you can point it directly to where qmake is located, like this:

    c:\path\to\where\qt\is\bin\qmake.exe file.pro
    

    Oh, right. Possibly you need to type in "qmake.exe" instead of just "qmake" on Windows.



  • @sierdzio said in Qt Programming Language:

    You don't need Qt Creator. Qt itself is enough, because qmake is part of it. If cmd complaints it can't find qmake it's probably because it is not in the PATH environment variable. I have not used Qt on Windows for a long time, but if nothing's hanged, you can probably run a Qt-provided command line which has the tools properly set up.

    Alternatively, with your current command line, you can point it directly to where qmake is located, like this:

    c:\path\to\where\qt\is\bin\qmake.exe file.pro
    

    Oh, right. Possibly you need to type in "qmake.exe" instead of just "qmake" on Windows.

    I've searched in my computer's hard drive, and I can't find Qmake.exe, as it was uninstalled along with Qt Creator. Is there a way for me to find a direct download to just the Qmake.exe component? If so, where do I search?


  • Moderators

    @Annabelle No you will have to install Qt. You don't need to install the Creator part of Qt, but if you do it won't hurt. You can disable the install of Qt Creator as an advanced part of the install.



  • @ambershark said in Qt Programming Language:

    @Annabelle No you will have to install Qt. You don't need to install the Creator part of Qt, but if you do it won't hurt. You can disable the install of Qt Creator as an advanced part of the install.

    I tried that, but even the installer can't be fully accessed with JAWS or NVDA. Not even the built-in Microsoft Narrator that comes with Windows 7 can access that checkbox you're talking about. I've put in an Email message to the Qt Creator team, and unfortunately they haven't sent me an answer yet.


  • Moderators

    @tekojo maybe you can use your magic powers to ping people at Qt Company? See the post by @Annabelle above.



  • @sierdzio said in Qt Programming Language:

    @tekojo maybe you can use your magic powers to ping people at Qt Company? See the post by @Annabelle above.

    I'm confused! Who's Tekojo?


  • Lifetime Qt Champion

    He's the community manager but currently pretty busy with the Qt Contributor Summit as well as Qt World Summit.


  • Moderators

    @Annabelle It won't hurt to just do the default install with Qt Creator. You'll still get Qt and the command line tools like Qmake using the default install. So I wouldn't worry about not being able to access that checkbox.

    Would be a nice thing to have fixed for the future though.



  • @ambershark Is it possible we could write Morse code aka keyboard and just tab through the boxes on the installer and select what she needs by pressing keys?


  • Moderators

    @Sunfluxgames You wouldn't really have to write anything.. someone could just run the installer and figure out the exact keypresses she needs to get to the box she wants to uncheck and then list them here. If she's careful she can do it without a screen reader.

    Also having a friend help install it would work too.

    But again, it's not necessary at all to uncheck qt creator. I usually let it install Qt Creator and I pretty much never use it. I can spare the 200mb or whatever it is on my hard drive though. :)



  • @SGaist said in Qt Programming Language:

    He's the community manager but currently pretty busy with the Qt Contributor Summit as well as Qt World Summit.

    I've got Qt Creator on my machine, and unfortunately I'm not able to create widgets without a mouse. I wonder, are there any keyboard equivalents to mouse clicks for creating widgets and wizard pages?


  • Moderators

    @Annabelle Absolutely.. I do all my widgets in code. I almost never use the designer to create my forms/widgets.

    I.e. if you want a label and text entry field you could do:

    QWidget *w = new QWidget();
    w->resize(600,400);
    QHBoxLayout *box = new QHBoxLayout();
    box->addWidget(new QLabel("Name"));
    box->addWidget(new QTextEdit());
    w->setLayout(box);
    w->show();
    


  • @ambershark said in Qt Programming Language:

    @Annabelle Absolutely.. I do all my widgets in code. I almost never use the designer to create my forms/widgets.

    I.e. if you want a label and text entry field you could do:

    QWidget *w = new QWidget();
    w->resize(600,400);
    QHBoxLayout *box = new QHBoxLayout();
    box->addWidget(new QLabel("Name"));
    box->addWidget(new QTextEdit());
    w->setLayout(box);
    w->show();
    

    Do you have any remote access software where you could log on to my computer and show me what you mean? For example, ITeleport? By keyboard shortcuts, I mean something like:
    "Create New Widget" (Alt+W)
    "Set Layout" (Control+Shift+L)
    "Add Widget" (Alt+A)
    "Show/Hide" (Control+Shift+H)
    "Resize" (Control+R)



  • @Annabelle You wouldn't need shortcuts to create anything.

    In notepad++ you would create a class that can create dynamic widgets with you passing arguments for size and name in the function. All the designer lets us do is make it easier to drag and drop widgets into place while building code for us.

    In your case you going to build your application through C++ and .h files.



  • @Sunfluxgames said in Qt Programming Language:

    @Annabelle You wouldn't need shortcuts to create anything.

    In notepad++ you would create a class that can create dynamic widgets with you passing arguments for size and name in the function. All the designer lets us do is make it easier to drag and drop widgets into place while building code for us.

    In your case you going to build your application through C++ and .h files.

    I'm still a bit confused, because I want to try the Qt Designer, but I seem to be left in the dust as to how I would have access to the command to create, add, delete, and show/hide widgets without keyboard shortcuts. Since I have 0% vision, this is why I use a screenreader and keyboard shortcuts. I wonder if any of the Qt Creator administrators could help with making the program more screenreader friendly. Image-based icons are a screenreader's weak point. text-based icons and menus with detailed descriptions are what is accessible to both sighted and blind individuals alike.



  • @Annabelle You should really take ambershark's advice. Code all your widgets in notepad++ and use the command line to complie your project into a .exe

    Then have someone with vision look over your project to make sure it looks the way you think. Even with the basics understanding of C++ your project is very simple to do.



  • @Sunfluxgames said in Qt Programming Language:

    @Annabelle You should really take ambershark's advice. Code all your widgets in notepad++ and use the command line to complie your project into a .exe

    Then have someone with vision look over your project to make sure it looks the way you think. Even with the basics understanding of C++ your project is very simple to do.

    I tried the code:

    qmake ceremonyscriptgenerator.pro
    make
    

    but it gives me the error message that "qmake is not a valid internal or external command or operable program". This is even after Qt Creator and all of its components are completely installed on my machine. Perhaps there's something I'm doing wrong? Maybe I could ask my friend, Markus Johnson (yes, that's "Markus" with a K, not a C), if he could try to set up some mouse movement scripts for Qt Designer with Axife Mouse Recorder (http://www.axife.com).


  • Lifetime Qt Champion

    Hi
    It cannot find qmake. you must use full path to it
    like
    C:\Qt\5.9.1\msvc2015_64\bin\qmake.exe
    but yours will something with mingw and not msvc2015_64



  • Ok, so you have installed Qt again in full I assume. And you are back to the very same error you had before when you used:

    qmake ceremonyscriptgenerator.pro
    make
    

    But remember, you already got an answer to solve this by @sierdzio :

    @sierdzio said in Qt Programming Language:

    Alternatively, with your current command line, you can point it directly to where qmake is located, like this:

    c:\path\to\where\qt\is\bin\qmake.exe file.pro
    

    Oh, right. Possibly you need to type in "qmake.exe" instead of just "qmake" on Windows.



  • Oh @mrjj got there first. :P


  • Moderators

    @Annabelle There's very little chance of you being able to use the designer without sight. You absolutely have to use a mouse.

    However you do not need the designer to make user interfaces. You just code them like I showed you. No designer required, all can be done with your editor of choice, i.e. Notepad++.

    So really you just need to learn Qt by reading documentation and or books with your reader. Then you can literally just write the code, no vision required other than having someone check your layouts and such to make sure things looks good.



  • @SGaist said in Qt Programming Language:

    That's where signals and slots comes into play. For each control proposing a choice you will have a slot that will modify your UI based on the state/choice of the control that was just modified.

    So for example, connecting a push button to a signal would look like:

        signalMapper = new 
    QSignalMapper
    (this);
        signalMapper->setMapping(BackButton, 
    QString
    ("Step 1.txt"));
        signalMapper->setMapping(NextButton, 
    QString
    ("Step 3.txt"));
        signalMapper->setMapping(CancelButton, 
    QString
    ("Cancel"));
    
        connect(BackButton, &
    QPushButton::
    clicked,
            signalMapper, &
    QSignalMapper::
    map);
        connect(NextButton, &
    QPushButton::
    clicked,
            signalMapper, &
    QSignalMapper::
    map);
        connect(CancelButton, &
    QPushButton::
    clicked,
            signalMapper, &
    QSignalMapper::
    map);
    


  • @SGaist said in Qt Programming Language:

    That's where signals and slots comes into play. For each control proposing a choice you will have a slot that will modify your UI based on the state/choice of the control that was just modified.

    Specifically, when I talk about filling in gender-specific words in the finished text, for example, when "Female" is selected, the appropriate gender-specific pronouns (she, her, hers, herself) are automatically printed in the place which would say "Gender pronoun" if neither radio button is selected. Same goes for gender nouns (man, woman, boy, girl).



  • @SGaist said in Qt Programming Language:

    With C++ the QComboBox widget or with Qt Quick the ComboBox QML type.

    Does the documentation on the QComboBox widget specifically have instructions on how to add items to a combo box? I've searched there, and it only tells me properties inherited from other QWidgets, along with a detailed description of the QComboBox.


  • Moderators

    @Annabelle You're looing for addItem and addItems.



  • @SGaist said in Qt Programming Language:

    You can use a QLabel when you want to show some text.

    What I meant is something like:

    class SpouseWidget : public QWidget {
        Q_OBJECT
    public:
        enum Gender {
            Bride,
            Groom
        }
    public:
        SpouseWidget(QWidget *parent = 0);
        QString name() const;
        Gender gender() const;
    
    private:
         QLineEdit *nameLineEdit;
        QButtonGroup *genderButtonGroup;
    };
    
    SpouseWidget::SpouseWidget(QWidget *parent):
        QWidget(parent),
        nameLineEdit(new QLineEdit),
        genderButtonGroup(new QButtonGroup(this)
    
        QRadioButton *brideButton = new QRadioButton (tr("Bride"));
        brideButton->setProperty("gender", SpouseWidget::Bride);
        bride->setChecked(true);
        QRadioButton *groomButton = new QRadioButton (tr("Groom"));
        groomButton->setProperty("gender", SpouseWidget::Groom);
    
        genderButtonGroup->add(brideButton);
        genderButtonGroup->add(groomButton);
        QHBoxLayout *genderLayout = new QHBoxLayout;
        genderLayout->addWidget(brideButton);
        genderLayout->addWidget(groomButton);
    
        QFormLayout *layout = new QFormLayout(this);
        layout->addRow(tr("Name"), nameLineEdit);
        layout->addRow(tr("Gender"), genderLayout);
    }
    
    QString SpouseWidget::name() const 
    {
        return nameLineEdit->text();
    }
    
    SpouseWidget::Gender SpouseWidget::gender() const
    {
        QAbstractButton *button = genderButtonGroup->checkedButton();
        QVariant genderVariant = button->property("gender");
        return genderVariant.value<SpouseWidget::Gender>()
    }
    

    Then in your page you can use a QGroupBox for each spouse with an instance of SpouseWidget inside.

    One thing I'm stumped on is the use of "public" and "private". Are those parameters meant to share some of the widgets with the general population, but hide any widgets with what would otherwise be regarded as personal information?



  • I wonder if I can use QAccessible widgets instead. What would those look like? For example, would I write something like:
    QAccessibleMenu *languageMenu;
    I wonder if they have QAccessible versions of QRadioButton, QComboBox, and QListBox?


  • Qt Champions 2018



  • @mrjj
    You're right that Qt Creator doesn't work with screenreaders. I sure wish I could find something that does work, aside from just creating the file in a plain text editor like Notepad. And you're also right that screenshots would be useless for me, as I can't see anything at all, not even lights and colors.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.