MyDialog::exec() is incorrect. First of all, QDialog::exec() is not virtual so it might be a better idea to rename the method to avoid confusion if you even need a method like that at all. I'd suggest removing it and using QDialog::exec() which should be sufficient for you. QDialog::exec() starts an event loop which blocks while the dialog is open.
The static convenience methods of various QDialog subclasses work more or less like this:
{
public:
private:
};
{
MyDialog dialog(parent);
if (dialog.
exec() == QDialog::Accepted) return dialog.info;
}
// usage:
QString blaa
= MyDialog
::doSomething();
if (!blaa.isNull())
{
// dialog was accepted, blaa contains the info
}
class MyDialog : public QDialog
{
public:
static QString doSomething(QWidget* parent = 0);
private:
QString info;
};
QString MyDialog::doSomething(QWidget* parent)
{
MyDialog dialog(parent);
if (dialog.exec() == QDialog::Accepted)
return dialog.info;
return QString();
}
// usage:
QString blaa = MyDialog::doSomething();
if (!blaa.isNull())
{
// dialog was accepted, blaa contains the info
}
To copy to clipboard, switch view to plain text mode
Bookmarks