Qt Programming Language
-
@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?
-
@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).
-
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.
-
@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.
-
@Annabelle You're looing for
addItem
andaddItems
. -
@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?
-
-
@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. -
So as an example, if I want the gender-appropriate wordings to be printed in the finished script, triggered by the "Groom", "Bride", "Male" or "Female" radio buttons being checked, how would I do this? For example, the default text that appears in the Wedding Ceremony script if neither gender radio button has been checked, and if no names have been given, would be something like:
(Name), will you have this person to be your lawfully wedded spouse, to have and to hold from this day forward? Will you love him/her, comfort him/her, honor and keep him/her in sickness and in health? And, forsaking all others, be faithful only to him/her, so long as you both shall live?
(Name) would of course be replaced by the names of the individuals being married, which the customer will type in the edit boxes named "Spouse 1 Name" and "Spouse 2 Name". If the Bride radio button is checked, "person" would be replaced with "woman", and "spouse" would be replaced with "wife" and "him/her" (or would it be easier to put "them" for unspecified gender) would be replaced with "her". When the Groom radio button is checked, "Person" would be replaced with "Man" and "Spouse" would be replaced with "Husband", and "him/her" would be replaced with "him". Or, I could put an option where "husband" and "wife" could be customized to say "life partner", "lover", or whatever the couple chooses to call each other in an edit box. Maybe that edit box can be triggered by a radio button that says "custom Title". Also, I have a checkbox named "SameLastName". If checked, an edit box appears that is called "Last Name For Couple". However, I want to make it so that if the checkbox is unchecked, the "Last Name For Couple" edit box is hidden, and instead, two edit boxes appear that are called "Last Name for Spouse 1" and "Last Name for Spouse 2". How would I code these parameters?