• QT QInputDialog弹出消息框用法


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

    1. int main(int argc, char *argv[])
    2. {
    3. QApplication a(argc, argv);
    4. bool isOK;
    5. QString text = QInputDialog::getText(NULL, "Input Dialog",
    6. "Please input your comment",QLineEdit::Normal,"your input chars",&isOK);
    7. if(isOK)
    8. {
    9. QMessageBox::information(NULL, "Information",
    10. "Your input content is: " + text + "",
    11. QMessageBox::Yes | QMessageBox::No,QMessageBox::Yes);
    12. qDebug() << "Hello, World!";
    13. }
    14. else
    15. {
    16. qDebug() << "cancel!";
    17. }
    18. // MainWindow w;
    19. // w.show();
    20. return a.exec();
    21. }

    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

    1. #include <QApplication>
    2. #include <QInputDialog>
    3. #include <QDebug>
    4. int main(int argc, char *argv[])
    5. {
    6. QApplication app(argc, argv);
    7. QInputDialog dialog;
    8. dialog.setInputMode(QInputDialog::IntInput);
    9. dialog.setIntRange(0, 99);
    10. dialog.setIntValue(10);
    11. dialog.setLabelText("Enter a number between 0 and 99:");
    12. QObject::connect(&dialog, &QInputDialog::intValueChanged, [&](int value)
    13. {
    14. qDebug() << "Value changed to" << value;
    15. });
    16. // 显示对话框
    17. // dialog.exec();
    18. // 模拟用户点击OK
    19. QObject::connect(&dialog, &QInputDialog::intValueSelected, [&](int value)
    20. {
    21. qDebug() << "Simulating OK button click with value" << value;
    22. });
    23. // 发射信号以模拟点击OK
    24. QMetaObject::invokeMethod(&dialog, "accept", Qt::QueuedConnection);
    25. return app.exec();
    26. }

    在Qt中,可以使用QInputDialog类来弹出一个输入对话框。要判断一个QInputDialog是否已经弹出,可以通过检查其是否有父窗口并且该父窗口是否可见来实现。

    首先创建了一个QInputDialog对象,并设置了它不显示任何按钮和一个标签文本。然后,我们定义了一个布尔变量isVisible来判断对话框是否可见。通过调用dialog.isVisible()来检查对话框是否已经显示给用户。如果对话框可见,isVisible将被设置为true,否则为false

    请注意,这种方法假设你没有手动地将对话框的可见性设置为其他值。如果你在显示对话框之前或者在其他地方修改了它的可见性,你需要相应地更新这个检查逻辑。

    以下是一个简单的示例,展示如何判断一个QInputDialog是否已经弹出:

    1. #include <QApplication>
    2. #include <QInputDialog>
    3. #include <QDebug>
    4. int main(int argc, char *argv[])
    5. {
    6. QApplication app(argc, argv);
    7. QInputDialog dialog;
    8. dialog.setOptions(QInputDialog::NoButtons); // 设置对话框没有按钮
    9. dialog.setLabelText("请输入一个数字:");
    10. bool isVisible = false;
    11. // 检查对话框是否可见
    12. if(dialog.isVisible())
    13. {
    14. isVisible = true;
    15. }
    16. qDebug() << "Input dialog is" << (isVisible ? "visible" : "not visible");
    17. return app.exec();
    18. }

  • 相关阅读:
    vue3生成随机密码
    【PAT甲级】1115 Counting Nodes in a Binary Search Tree
    6.Tensors For Beginners-What are Convector
    python网页爬虫接口和常见反扒
    Android安全性优化——APP加固
    netstat 基本使用方法
    软件工程毕业设计课题(45)微信小程序毕业设计JAVA教室实验室预约小程序系统毕设作品项目
    Elasticsearch学习系列三(搜索案例实战)
    log4j:WARN No appenders could be found for logger
    为什么处理有序的数组比无序的数组更快
  • 原文地址:https://blog.csdn.net/wangjie36/article/details/137115411