Qt Programming Language


  • Lifetime Qt Champion

    Ok, then I'd recommend breaking your current design in logical pieces. For example, there's no need to double the number of widget to handle both spouse names. You can create one widget for that part and then have two instances of it in your "main widget".



  • @SGaist said in Qt Programming Language:

    Ok, then I'd recommend breaking your current design in logical pieces. For example, there's no need to double the number of widget to handle both spouse names. You can create one widget for that part and then have two instances of it in your "main widget".

    Two instances of the same widget? I'm confused! Could you please tell me exactly how I could do that? Here's a bit of code, I don't know if this is what you want me to try.

    QFormLayout *form = newQFormLayout:
    SetWindowTitle(tr("Step 2");
    resize(480, 320);
    }
    QButtonGroup *buttonGroup = new buttonGroup(tr("Spouse 1 Gender")
    QRadioButton *radio1 = new QRadioButton ("Bride", this);
    QRadioButton *radio2 = new QRadioButton ("Groom", this);
    radio1->setChecked(true)
    QLineEdit *Spouse1NameEdit = new QLineEdit (this);
    QLabel *NameLabel = new QLabel("Spouse 1 Name", this);
    NameLabel->setBuddy(Spouse1NameEdit);
    QButtonGroup *buttonGroup = new buttonGroup(tr("Spouse 2 Gender")
    QRadioButton *radio3 = new QRadioButton ("Bride", this);
    QRadioButton *radio4 = new QRadioButton ("Groom", this);
    radio4->setChecked(true)
    QLineEdit *Spouse2NameEdit = new QLineEdit (this);
    QLabel *NameLabel = new QLabel("Spouse 2 Name", this);
    NameLabel->setBuddy(Spouse2NameEdit);
    QPushButton *button = new QPushButton ("Back", this);
    QPushButton *button = new QPushButton ("Next", this);
    
    I also want to find out, how do I put the following text into the beginning of the window when the customer gets to this specific screen.
    
    "The Basics: To begin, enter the first names of the couple, the last name(s) they'll be using after their marriage, and the city/town, then select the state/province, and country in which the wedding will take place."
    

    Same goes for any of the other screens up to the "Finish" screen. The text of the "Finish" screen will say:

    "Congratulations! You just built a one-of-a-kind wedding ceremony. Click the "Download" button to read your wedding script in the wizard. Click the "Save" button to save your script in any text format on your computer. Click the "Print" button to send your script to your printer." The kind of ceremony changes, depending on what is selected in the "Welcome" screen. Either a "Wedding Ceremony", a "Baptism Ceremony", or a "Funeral Ceremony".

  • Lifetime Qt Champion

    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.



  • I also want to find out, how do I put the following text into the beginning of the window when the customer gets to this specific screen.

    "The Basics: To begin, enter the first names of the couple, the last name(s) they'll be using after their marriage, and the city/town, then select the
    state/province, and country in which the wedding will take place."
    Same goes for any of the other screens up to the "Finish" screen. The text of the "Finish" screen will say:

    "Congratulations! You just built a one-of-a-kind wedding ceremony. Click the "Download" button to read your wedding script in the wizard. Click the "Save"
    button to save your script in any text format on your computer. Click the "Print" button to send your script to your printer." The kind of ceremony changes,
    depending on what is selected in the "Welcome" screen. Either a "Wedding Ceremony", a "Baptism Ceremony", or a "Funeral Ceremony".



  • @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.

    After I compile all my widgets in Notepad++, how would I turn them into an executable program?


  • Lifetime Qt Champion

    You can use a QLabel to show the text and add it at the bottom of the QFormLayout without specifying a text.

    As for your question with Notepad++, maybe using this plugin ?



  • @SGaist said in Qt Programming Language:

    You can use a QLabel to show the text and add it at the bottom of the QFormLayout without specifying a text.

    As for your question with Notepad++, maybe using this plugin ?

    Could you please explain what you mean when you say, "You can use a QLabel to show the text and add it at the bottom of the QFormLayout without specifying a text."? I'm a bit confused on that one!



  • @SGaist said in Qt Programming Language:

    You can use a QLabel to show the text and add it at the bottom of the QFormLayout without specifying a text.

    As for your question with Notepad++, maybe using this plugin ?

    I tried installing that plugin, but when I launched Notepad++, a screen popped up with a message telling me that the plugin isn't compatible with the version of Notepad++ I have. Is that because I have a newer version of Notepad++? I'm confused on that one!


  • Lifetime Qt Champion

    Like shown in my sample widget, you should use layouts in order to place your widgets around in your application. Therefore my suggestion, put your text into a QLabel with setText and then put that label at the appropriate place within the layout.

    As for the plugin, it might be out of date regarding the version of Notepad++. If possible, I'd recommend using Qt Creator in order to build your application. It would likely make things easier.



  • How would I be able to use QT Creator to make my project? Would I put the code I've already made in Notepad++ into a new project in Qt Creator? What would I do?



  • @SGaist said in Qt Programming Language:

    Like shown in my sample widget, you should use layouts in order to place your widgets around in your application. Therefore my suggestion, put your text into a QLabel with setText and then put that label at the appropriate place within the layout.

    As for the plugin, it might be out of date regarding the version of Notepad++. If possible, I'd recommend using Qt Creator in order to build your application. It would likely make things easier.

    I can't access Qt Creator with my screenreader, JAWS (Job Access With Speech). That's why I'm making the code in Notepad++. I just wish I knew how to make the finished program.



  • I'm still a bit stuck on this Qt Programming Language. Since I can't access Qt Creator with my JAWS screenreader, as it doesn't recognize image-based icons, how else can I create a finished program after compiling the source code in Notepad++? Anybody have any answers for me?


  • Lifetime Qt Champion

    @Annabelle
    So you can compile it already?
    Or is it the compiling part that is hard to do ?

    Can the JAWS read a command prompt ?



  • I'm still a bit confused on how to make the finished program. I can't access the Qt Creator, since my screenreader, or any screenreaders, for that matter, won't recognize image-based icons. Is there a way for someone blind like me to create a finished program such as the app I'm putting together, after compiling the source code in Notepad++?


  • Moderators

    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.



  • @mrjj said in Qt Programming Language:

    @Annabelle
    So you can compile it already?
    Or is it the compiling part that is hard to do ?

    Can the JAWS read a command prompt ?

    I can make the source code, it's the compiling the finished program part that's hard. Yes, JAWS can read a Command Prompt. What do I do in there?



  • Hi, you will need to create a .pro file which gives instructions on how to build your application. http://doc.qt.io/qt-4.8/qmake-project-files.html

    Once you have have this. you can do as instructed by @sierdzio in CMD.



  • @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.



  • Another thing I'd like to do is make icons for the push buttons, radio buttons, combo boxes, and checkboxes. I'd like to find out, is it OK for me to use unicode symbols as icons? For example:
    In the welcome screen, there are the following Radio Buttons
    ⚭ (Wedding Ceremony Radio Button)
    ~β›² (Baptism Ceremony Radio Button)
    β›Ό (Funeral Ceremony Radio Button)
    For the Spouse Genders, there should be the following Icons:
    πŸ‘° (Bride Radio Button)
    🀡 (Groom Radio Button)
    For the Baptism Person Types, there should be the following Icons:
    πŸ‘¦πŸ‘ΆπŸ‘§ (Infant Radio Button)
    πŸ‘¦πŸ‘§ (Child Radio Button)
    πŸ‘¦πŸ‘¨πŸ‘§πŸ‘© (Youth Radio Button)
    πŸ‘¨πŸ‘΄πŸ‘©πŸ‘΅ (Adult Radio Button)
    For the Funeral Ceremony Types, there should be the following icons:
    ⚰ (Funeral Radio Button)
    ⚱ (Memorial Service Radio Button)
    Note that some of the icons are composed of two or more unicode characters put together, as I couldn't find separate unicode symbols to represent them.



  • You should be able to use QString::fromUtf8() for this: http://doc.qt.io/qt-5/qstring.html#fromUtf8



  • @Allanis said in Qt Programming Language:

    You should be able to use QString::fromUtf8() for this: http://doc.qt.io/qt-5/qstring.html#fromUtf8

    Could you please be so kind as to give me an example of what one of my icons would look like with the QString::fromUtf8() code? For example: πŸ‘¦πŸ‘ΆπŸ‘§



  • Sure. I'm not sure exactly what you mean. Do you want an image or a code example? either way I whipped up a quick example to demonstrate what it would look like. Here's an image.

    0_1506120620297_annabelle.png

    Given that your first post mentioned you where visually impaired, I think I may have misunderstood your meaning, so here's an example in code:

      QRadioButton* rb = new QRadioButton();
      QString str = QString::fromUtf8("<Utf-8 code> Button Name");
      rb->setText(str);
    

    Where <Utf-8 code> = the character you wish to display.
    Pretty sure there is a nicer way to do it. But I'm off to bed. That should get you started though.



  • @Allanis said in Qt Programming Language:

    Sure. I'm not sure exactly what you mean. Do you want an image or a code example? either way I whipped up a quick example to demonstrate what it would look like. Here's an image.

    0_1506120620297_annabelle.png

    Given that your first post mentioned you where visually impaired, I think I may have misunderstood your meaning, so here's an example in code:

      QRadioButton* rb = new QRadioButton();
      QString str = QString::fromUtf8("<Utf-8 code> Button Name");
      rb->setText(str);
    

    Where <Utf-8 code> = the character you wish to display.
    Pretty sure there is a nicer way to do it. But I'm off to bed. That should get you started though.

    So are you thinking I should write something like:
    QRadioButton* rb = new QRadioButton();
    QString str = QString::fromUtf8("<πŸ‘°> Button Name");
    rb->setText(str);
    And for "Button Name", would it be something like:
    QRadioButton* rb = new QRadioButton();
    QString str = QString::fromUtf8("<πŸ‘°> Bride");
    rb->setText(str);
    Something along those lines?



  • Yeah that will work. But remove the <> from around your unicode character. I only placed them their as placeholder. It will work by placing the unicode character in your source file as you have done, but I would recommend finding the value for it instead. I'm replying from my phone so I can't look ot up for you.



  • @Allanis said in Qt Programming Language:

    Yeah that will work. But remove the <> from around your unicode character. I only placed them their as placeholder. It will work by placing the unicode character in your source file as you have done, but I would recommend finding the value for it instead. I'm replying from my phone so I can't look ot up for you.

    @Allanis said in Qt Programming Language:

    Yeah that will work. But remove the <> from around your unicode character. I only placed them their as placeholder. It will work by placing the unicode character in your source file as you have done, but I would recommend finding the value for it instead. I'm replying from my phone so I can't look ot up for you.

    By value, do you mean the Unicode value? Or do you mean the hexidecimal value? I'm confused!



  • @Annabelle said in Qt Programming Language:

    πŸ‘°

    Sorry, I wasn't too clear. You should use the UCN for example: '\u2639' will represent ☹
    There can be problems with this as compilers are required to support only the basic source characters. I'm not sure if Qt gives you much help in way of UCN's so if it doesn't display the character for you, use the literal '☹' in your source, and perhaps see if someone else can help you with the use of UCN as I'm not so sure without reading up on it. Perhaps also try reading up on character sets to understand encodings.

    Edit:
    I just checked up the code for πŸ‘§

      QString str1 = QString::fromUtf8("\U0001F467 Button 1");
    


  • @Allanis said in Qt Programming Language:

    @Annabelle said in Qt Programming Language:

    πŸ‘°

    Sorry, I wasn't too clear. You should use the UCN for example: '\u2639' will represent ☹
    There can be problems with this as compilers are required to support only the basic source characters. I'm not sure if Qt gives you much help in way of UCN's so if it doesn't display the character for you, use the literal '☹' in your source, and perhaps see if someone else can help you with the use of UCN as I'm not so sure without reading up on it. Perhaps also try reading up on character sets to understand encodings.

    Edit:
    I just checked up the code for πŸ‘§

      QString str1 = QString::fromUtf8("\U0001F467 Button 1");
    

    So for Bride:

    QString str1 = QString::fromUtf8("\U0001F470 Button 1");
    -> Set Text = "Bride";



  • @Annabelle said in Qt Programming Language:

    \U0001F470

    That's right. You've got it.



  • @Allanis said in Qt Programming Language:

    @Annabelle said in Qt Programming Language:

    \U0001F470

    That's right. You've got it.

    So would this look right?

    QString str1 = QString::fromUtf8("\U0001F470 Button 1");
    -> Set Text = "Bride";
    Not quite sure how to do the "Set Text" part, so I did the best I could when writing the code. So how would I compile the full version of the radio button? Would it look something like this?
    QRadioButton *button = new QRadioButton ("Bride", this);
    QString str1 = QString::fromUtf8("\U0001F470 Button 1");
    -> Set Text = "Bride";



  • QRadioButton* button = new QRadioButton();
    QString str1 = QString::fromUtf8("\U0001F470 Bride");
    button->setText(str1);
    

    I would suggest reading a book to get yourself better acquainted with C++. Otherwise you will encounter many pitfalls.



  • @Allanis said in Qt Programming Language:

    QRadioButton* button = new QRadioButton();
    QString str1 = QString::fromUtf8("\U0001F470 Bride");
    button->setText(str1);
    

    I would suggest reading a book to get yourself better acquainted with C++. Otherwise you will encounter many pitfalls.

    Are there any books out there that are available in Braille? Since that's the primary format which I read. If that's not possible, is there a .chm help file that can explain the language in detail?



  • It may be difficult to find such a technical book in Braille. I had a look but came up empty. You can find a copy of "C++ gui programming with qt4 2nd edition" in .chm.

    https://github.com/sherlock/qt?files=1

    I think your screen reader should be ok to read epub? If so you could pickup most textbooks from amazon or something.



  • @Allanis said in Qt Programming Language:

    It may be difficult to find such a technical book in Braille. I had a look but came up empty. You can find a copy of "C++ gui programming with qt4 2nd edition" in .chm.

    https://github.com/sherlock/qt?files=1

    I think your screen reader should be ok to read epub? If so you could pickup most textbooks from amazon or something.

    I tried searching for the .chm file "C++ gui programming with qt4 2nd
    edition" on the link you provided, but it says "No Matching Files Found". Where do I go next?


  • Lifetime Qt Champion



  • @mrjj said in Qt Programming Language:

    @Annabelle
    Hi, it is hidden inside a download button
    this is direct link
    https://github.com/sherlock/qt/raw/master/C%2B%2B GUI Programming with Qt4 2ndEdition.chm

    I downloaded the .chm file, but now when I attempt to read any of the topics, it seems there's nothing in them. Is there something wrong with the file?


  • Lifetime Qt Champion

    @Annabelle
    Hi
    Yes it seems that at least on windows 10, only the toc is there -
    nothing is shown when you click on a topic.

    If pdf is ok, here is direct link
    https://tfetimes.com/wp-content/uploads/2015/09/c-gui-programming-with-qt-4-2ndedition.pdf



  • Sorry if I provided a bad link. (Didn't really download to check it).
    See if your screen reader can read epubs ok. And you can find all you need on amazon. (Alternate outlets are available too.)



  • @mrjj said in Qt Programming Language:

    @Annabelle
    Hi
    Yes it seems that at least on windows 10, only the toc is there -
    nothing is shown when you click on a topic.

    If pdf is ok, here is direct link
    https://tfetimes.com/wp-content/uploads/2015/09/c-gui-programming-with-qt-4-2ndedition.pdf

    1. This machine I'm on is Windows XP.
    2. My screenreader doesn't read PDF's.
    3. What are EPubs?
    4. Would I have to pay to find it on Amazon? If so, how much?


  • https://www.youtube.com/watch?v=ETOohmYui3Q
    

    Would finding a pdf that would read her all the text from a basic C++ book work?

    Then use Jaws to google examples or terms that she doesn't understand?

    EPUB is an e-book file format with the extension .epub that can be downloaded and read on devices like smartphones, tablets, computers, or e-readers.



  • @Sunfluxgames said in Qt Programming Language:

    https://www.youtube.com/watch?v=ETOohmYui3Q
    

    Would finding a pdf that would read her all the text from a basic C++ book work?

    Then use Jaws to google examples or terms that she doesn't understand?

    EPUB is an e-book file format with the extension .epub that can be downloaded and read on devices like smartphones, tablets, computers, or e-readers.

    Which book of Basic C++ are you thinking of? PDF's in general don't work with my screenreader. .chm's, .txt's, and .doc's work just fine.


Log in to reply