Qt Programming Language
-
@mrjj said in Qt Programming Language:
Hi
What is the finished script ?
Should it be a document with formatting ?
Or can a text format do it ?There is the QTextEdit Class that can display rich text but what format would the end user want to have the script in ?
Isn't a "text edit" something the user would write into? For example, when they get to Step 19, which asks the customer to write what they want to choose for the "Introductory Music", "Interlude Music" which can be played at any time during the ceremony, and "Exit Music", those would be separate multiline edit boxes. The finished document would be one that's not editable, so a plain text format would do. The hard part for me would be how I would notate the widgets for paragraphs and sections.
-
@SGaist said in Qt Programming Language:
There's QRadioButton and QCheckBox.
How would I translate this example of checkboxes into Qt Widgets? Also, how would I make the tooltips of these checkboxes be spoken as "tutor messages" by a screenreader?
<label class="checkbox"> <span data-tooltip="The moments when the Bride/couple approach the altar and exit the wedding venue. Usually accompanied by music and the wedding party."> <input value="processionalRecessional" checked="checked" id="elements-processional-recessional" type="checkbox"> Processional/Recessional </span> </label> <label class="checkbox"> <span data-tooltip="A short greeting from the minister/officiant explaining the significance of the event."> <input value="welcomeStatement" checked="checked" id="elements-welcome-statement" type="checkbox"> Welcome Statement </span> </label> <label class="checkbox"> <span data-tooltip="A special moment of the ceremony, often containing a moment of silence, where the minister/officiant offers the guests a chance to honor those who couldn't attend, especially loved ones who are no longer with us. Guests may opt to light candles in honor of the departed."> <input value="memorialCandle" checked="checked" id="elements-memorial-candle" type="checkbox"> Honoring The Departed </span> </label> <label class="checkbox"> <span data-tooltip="A prayer or call to a higher power or force, often at the opening, as an intercession, or during the closing of the ceremony. This is usually recited by the minister/officiant. Sometimes the guests may be asked to join in."> <input value="Wedding Prayers" checked="checked" id="elements-consecration" type="checkbox"> Wedding Prayers </span> </label> <label class="checkbox"> <span data-tooltip="Also known as the “Give-Away”, or the “Bridal Presentation”, in which the Bridal Companion (typically her father) “gives”, “brings”, or “presents” her to the groom."> <input value="familyBlessing" checked="checked" id="elements-family-blessing" type="checkbox"> Family Blessing </span> </label> <label class="checkbox"> <span data-tooltip="A controversial element in which the minister/officiant asks those assembled if they approve of the union. Include with caution!"> <input value="speakNow" checked="checked" id="elements-speak-now" type="checkbox"> Speak Now </span> </label> <label class="checkbox"> <span data-tooltip="A controversial element in which the minister/officiant asks the soon-to-be married couple if they affirm their union. Include with caution!"> <input value="chargeToTheCouple" checked="checked" id="elements-charge-to-the-couple" type="checkbox"> Charge To The Couple </span> </label> <label class="checkbox"> <span data-tooltip="A more elaborate message from the minister/officiant, in which she/he expounds on the virtues of marriage and married life."> <input value="weddingSermon" checked="checked" id="elements-wedding-sermon" type="checkbox"> Wedding Sermon </span> </label> <label class="checkbox"> <span data-tooltip="The moment where a passage, often a poem, a scripture lesson, or even a song lyric is read, either by the minister/officiant, a guest reader, or even the bride or groom. These can include romantic novel sections, Bible Stories about marriage, love poems, song lyrics about romance, or even passages about how the soon-to-be married couple feels about each other, such as the moment when they first met."> <input value="weddingReadings" checked="checked" id="elements-consecration" type="checkbox"> Wedding Readings </span> </label> <label class="checkbox"> <span data-tooltip="A short blessing of the ceremony, often containing a prayer or call to a higher power or force."> <input value="consecration" checked="checked" id="elements-consecration" type="checkbox"> Consecration </span> </label> <label class="checkbox"> <span data-tooltip="It is required by law that a wedding ceremony include a Declaration of Intent to marry between the two individuals electing to join in the marriage contract." This can be in the form of an "I Do", where the minister/officiant asks questions to the soon-to-be married couple beginning with "Do you", and in turn, the couple answers "I do". Or it can be in the form of an "I Will", where the minister/officiant asks questions to the soon-to-be married couple beginning with "Will you", and in turn, the couple answers "I will.".> <input checked="checked" value="declarationOfIntent" id="elements-declaration-of-intent" type="checkbox"> Declaration of Intent </span> </label> <label class="checkbox"> <span data-tooltip="At this time, the couple exchanges their vows with one another. Often the most emotional part of the wedding. The couple can have a "repeat-after-me", where the minister/officiant read the vows phrase-by-phrase, and they repeat. Or they can have the minister/officiant say the vows in the form of "Do you" or "Will you" questions, in which the couple in turn answers "I Do" or "I Will". The soon-to-be married couple can choose from traditional vows of different denominations, they can even modify them if the ceremony allows, or they can mix and match wordings from different sets of vows if they like. But the beauty of this moment is when soon-to-be married couples often go all out and write their own vows, which they can either render as "I-Do's" or "I-Will's", or a repeat-after-me with the minister/officiant, or they can even read them to each other. Sometimes, if the couple makes vows that are identical, they can often read and say them together."> <input value="exchangeOfVows" id="elements-exchange-of-vows" checked="checked" type="checkbox"> Exchange of Vows </span> </label> <label class="checkbox"> <span data-tooltip="It has become custom that individuals getting married will exchange rings with one another."> <input value="exchangeOfRings" id="elements-exchange-of-rings" checked="checked" type="checkbox"> Exchange of Rings </span> </label> <label class="checkbox"> <span data-tooltip="The minister/officiant officially declares the couple as having been legally wed."> <input value="pronouncement" id="elements-pronouncement" checked="checked" type="checkbox"> Pronouncement </span> </label> <label class="checkbox"> <span data-tooltip="Often, the couple will elect to exchange a kiss with one another after they've been declared married."> <input value="kiss" id="elements-kiss" checked="checked" type="checkbox"> Kiss </span> </label> <label class="checkbox"> <span data-tooltip="At this time, the minister/officiant has the opportunity to present the newlyweds to the guests before they exit."> <input value="presentation" id="elements-presentation" checked="checked" type="checkbox"> Presentation </span> </label>
-
You can set a tooltip on widgets.
If you'd like something different for the accessibly description there's a property for that too. By default it uses what you put in the tool tip.
From your description it seems your application could make use of QFormLayout to put your "wedding editor" in shape.
-
For the "Baptism Ceremony Builder" part of my Ceremony script generator, how would I make a single-line edit box who's label changes depending on which radio button is selected. For example, if the "Infant" or "Child" radio button is selected, the edit box would be named "Child", and if either "Youth" or "Adult" is selected, the same edit box would be named "Participant". This is of course where the customer would put the name of the child/participant being presented in the baptism/christening/dedication/naming ceremony. Same thing goes for the boxes named "Parent 1" (or "Sponsor 1") and "Parent 2" (or "Sponsor 2"). Also, how would I automatically fill in gender appropriate nouns and pronouns in the finished text based on the gender selected (Male or Female)?
-
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.
-
@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.
I would appreciate if you could please be so kind as to give me an example of code as to what this will look like. Also, here's a bit of an example of Qt widget code I've put together. Please tell me if this looks right. If there's anything I need to change in my code, please let me know.
QButtonGroup QRadioButton *button = new QRadioButton ("Bride", this); QRadioButton *button = new QRadioButton ("Groom", this); QLineEdit *lineEdit = new QLineEdit ("Spouse 1 Name", this); QButtonGroup QRadioButton *button = new QRadioButton ("Bride", this); QRadioButton *button = new QRadioButton ("Groom", this); QLineEdit *lineEdit = new QLineEdit ("Spouse 2 Name", this); QPushButton *button = new QPushButton ("Back", this); QPushButton *button = new QPushButton ("Next", this);
-
@SGaist said in Qt Programming Language:
Do you want to build something like a QWizard ?
I guess you could say that. Then when customers come to the last step, the "Download" button would be like the "Finish" button of an Installation Program if you like. So when customers click the "Download" button, a finished document appears on their screen. Then there could be a "Print" button, and a "Save" button.
-
There's something that is not exactly clear. Do you want to write an application that people install on there computer to generate these scripts ? Or should they go to some sort of web site ?
-
@SGaist said in Qt Programming Language:
There's something that is not exactly clear. Do you want to write an application that people install on there computer to generate these scripts ? Or should they go to some sort of web site ?
It's the former. I want to build an application that people install on their computer.
-
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".
-
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?
-
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!
-
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.