QDialog:需要按下按钮或返回值

时间:2017-03-10 09:28:31

标签: c++ qt

我正在搜索从QDialog小部件中获取按下按钮的简单方法。 (所有按钮在按下事件后完成对话,许多按钮)。这样:

MyDialog *ptrMyDialog = new MyDialog;
ptrMyDialog->exec(); // blocked til finished 
// ??? 
QAbstractButton * btn = ptrMyDialog->Function_I_Need();
// or. I only need a spezific return value, set by button. e.g
auto retValIneed= ptrMyDialog->exec();

任何提示都会有所帮助

对待Lars

2 个答案:

答案 0 :(得分:1)

QDialog exec()已经返回对话框是accepted还是rejected。如果这两者之间的区别是不够的,因为您已经有了自定义类,您可以自己轻松地实现这种行为。

任何按钮都已调用关闭对话框的其中一个函数,因此您可以简单地存储在类成员中按下的那个函数,并使用您想要的方法检索该值。

另一种可能性是重载exec(),调用其中的基类实现并返回自定义成员,该成员直接存储按下的按钮。

答案 1 :(得分:0)

在处理MyDialog中的按钮时,您将调用setResult(int r)方法,然后 result()将为您提供相应的值(可能还有 exec())。有关如何完成此操作的详细信息,您可以检查 QMessageBox 实现,因为 exec()返回实际的按钮ID。