使用QInputDialog类的静态方法来弹出对话框获取用户输入,缺点是不能自定义按钮的文字,默认为OK和Cancel:

int main(int argc, char *argv[])
{QApplication a(argc, argv);bool isOK;QString text = QInputDialog::getText(NULL, "Input Dialog","Please input your comment",QLineEdit::Normal,"your input chars",&isOK);if(isOK){QMessageBox::information(NULL, "Information","Your input content is: <b>" + text + "</b>",QMessageBox::Yes | QMessageBox::No,QMessageBox::Yes);qDebug() << "Hello, World!";}else{qDebug() << "cancel!";}//  MainWindow w;//  w.show();return a.exec();
}QString cancelButtonText() const:返回取消按钮的文本。
 QStringList comboBoxItems() const:返回下拉框的所有选项。
 int doubleDecimals() const:返回双精度浮点数的精度,即小数点后的位数。
 double doubleMaximum() const:返回双精度浮点数的最大值。
 double doubleMinimum() const:返回双精度浮点数的最小值。
 double doubleValue() const:返回当前输入的双精度浮点数值。
 InputMode inputMode() const:返回输入模式,可能为数值、日期、时间等。
 int intMaximum() const:返回整数的最大值。
 int intMinimum() const:返回整数的最小值。
 int intStep() const:返回每次增加或减少的整数值。
 int intValue() const:返回当前输入的整数值。
 bool isComboBoxEditable() const:返回下拉框是否可编辑。
 QString labelText() const:返回标签的文本。
 QString okButtonText() const:返回确认按钮的文本。
 void open(QObject *receiver, const char *member):打开输入对话框,并将指定的对象(receiver)和成员函数(member)连接起来,以响应对话框中的操作。
 InputDialogOptions options() const:返回输入对话框的选项,如是否显示取消按钮/编辑等。
 `void setCancelButtonText(const QString &text):设置取消按钮的文本。
 void setComboBoxEditable(bool editable):设置下拉框是否可编辑。
 void setComboBoxItems(const QStringList &items):设置下拉框的所有选项。
 void setDoubleDecimals(int decimals):设置双精度浮点数的精度,即小数点后的位数。
 void setDoubleMaximum(double max):设置双精度浮点数的最大值。
 void setDoubleMinimum(double min):设置双精度浮点数的最小值。
 void setDoubleRange(double min, double max):设置双精度浮点数的范围,包括最小值和最大值。
 void setDoubleValue(double value):设置当前输入的双精度浮点数值。
 void setInputMode(InputMode mode):设置输入模式,可能为数值、日期、时间等。
 void setIntMaximum(int max):设置整数的最大值。
 void setIntMinimum(int min):设置整数的最小值。
 void setIntRange(int min, int max):设置整数的范围,包括最小值和最大值。
 void setIntStep(int step):设置每次增加或减少的整数值。
 void setIntValue(int value):设置当前输入的整数值。
 void setLabelText(const QString &text):设置标签的文本。
 void setOkButtonText(const QString &text):设置确认按钮的文本。
 void setOption(InputDialogOption option, bool on = true):设置输入对话框的选项,如是否显示取消按钮、是否可编辑等。
 void setOptions(InputDialogOptions options):设置输入对话框的所有选项,包括是否显示取消按钮、是否可编辑等。
 void setTextEchoMode(QLineEdit::EchoMode mode):设置文本回显模式,用于文本框显示文本的方式。
 void setTextValue(const QString &text):设置文本框的文本值。
 bool testOption(InputDialogOption option) const:测试输入对话框的选项是否开启。
 QLineEdit::EchoMode textEchoMode() const:返回文本框的文本回显模式。
 QString textValue() const:返回文本框的文本值。
信号
 1)doubleValueChanged
         inputMode为DoubleInput的时候,改变对话框内容都会触发此信号。
void doubleValueChanged(double value)
  2)doubleValueSelected
         inputMode为DoubleInput的时候,用户通过接受对话框选择文本触发该信号。
void doubleValueSelected(double value)
  3)intValueChanged
         inputMode为IntInput的时候,改变对话框内容都会触发此信号。
void intValueChanged(int value)
   4)intValueChanged
         inputMode为IntInput的时候,用户通过接受对话框选择文本触发该信号。
 void intValueSelected(int value)
 5)textValueChanged
         inputMode为TextInput的时候,改变对话框内容都会触发此信号。
void textValueChanged(const QString &text)
  6)textValueChanged
         inputMode为TextInput的时候,用户通过接受对话框选择文本触发该信号。
void textValueSelected(const QString &text);
模拟用户主动点击OK或CANCEL

#include <QApplication>
#include <QInputDialog>
#include <QDebug>int main(int argc, char *argv[])
{QApplication app(argc, argv);QInputDialog dialog;dialog.setInputMode(QInputDialog::IntInput);dialog.setIntRange(0, 99);dialog.setIntValue(10);dialog.setLabelText("Enter a number between 0 and 99:");QObject::connect(&dialog, &QInputDialog::intValueChanged, [&](int value){qDebug() << "Value changed to" << value;});// 显示对话框// dialog.exec();// 模拟用户点击OKQObject::connect(&dialog, &QInputDialog::intValueSelected, [&](int value){qDebug() << "Simulating OK button click with value" << value;});// 发射信号以模拟点击OKQMetaObject::invokeMethod(&dialog, "accept", Qt::QueuedConnection);return app.exec();
}在Qt中,可以使用QInputDialog类来弹出一个输入对话框。要判断一个QInputDialog是否已经弹出,可以通过检查其是否有父窗口并且该父窗口是否可见来实现。
首先创建了一个QInputDialog对象,并设置了它不显示任何按钮和一个标签文本。然后,我们定义了一个布尔变量isVisible来判断对话框是否可见。通过调用dialog.isVisible()来检查对话框是否已经显示给用户。如果对话框可见,isVisible将被设置为true,否则为false。
请注意,这种方法假设你没有手动地将对话框的可见性设置为其他值。如果你在显示对话框之前或者在其他地方修改了它的可见性,你需要相应地更新这个检查逻辑。
以下是一个简单的示例,展示如何判断一个QInputDialog是否已经弹出:
#include <QApplication>
#include <QInputDialog>
#include <QDebug>int main(int argc, char *argv[]) 
{QApplication app(argc, argv);QInputDialog dialog;dialog.setOptions(QInputDialog::NoButtons); // 设置对话框没有按钮dialog.setLabelText("请输入一个数字:");bool isVisible = false;// 检查对话框是否可见if(dialog.isVisible()) {isVisible = true;}qDebug() << "Input dialog is" << (isVisible ? "visible" : "not visible");return app.exec();
}