[Qt-interest] Passing a variable back from a form

Robert Wood robert.wood at apostrophe.co.uk
Tue Mar 22 23:12:29 CET 2011


I am trying to create a pop-up window that has a load of JPEGs on it. 
When one of the JPEGs (which is put on a push button) is clicked, I want 
the form to close and a value dependent on which button is pressed 
passed back to the calling form.

I have tried a few things such as making it a dialogue box, but this 
doesn't work as you seem to need to press the OK button. I tried this 
(using a naughty global variable!):


// This routine does return the value and close the form
quint16 config_dialogue::returnConfig(void)
{

     return RetVal;

}

// This is one of the JPEG buttons; it does set the RetVal to 42
// but it does not shut the form down and pass the value back
quint16 config_dialogue::nineGroups(void)
{

     RetVal = 42;
     returnConfig();

}

Then used this from the calling from:

	config_dialogue dialogue(this);

	if (dialogue.exec() == QDialog::Accepted)
		{
		ConfigNumber = dialogue.returnConfig();
		ui->label->setText("Number returned" + QString::number(ConfigNumber));
		}

And although I do get 42 back. I still have to press the OK button.

So, is there a way to have a load of buttons on a form and whichever 
button you press it passes a unique number back to the calling form 
please? It doesn't have to be a dialogue, just a normal form will be fine.

I did try passing a pointer to a variable to the dialogue/form and 
making the dialogue modal, but the scope of it is only within the  class 
constructor. I guess there might be a way of having this pointer 
accessible within the rest of the class, but this would be a weakness in 
my C++ knowledge. (Yes I know this isn't a C++ tutorial forum, so if 
this question offends please just ignore me!).

Thanks!



More information about the Qt-interest-old mailing list