【问题标题】:How to enter a character to QLineEdits from QPushButtons depending on the focus in Qt如何根据 Qt 中的焦点从 QPushButtons 向 QLineEdits 输入字符
【发布时间】:2015-11-24 11:42:55
【问题描述】:

我正在使用 Qt Creator 制作 UI。
UI 由两个或多个 QLineEdits 和十个 QPushButtons 组成,用于向 QLineEdits 输入 0-9 数字字符。如何在QLineEdits 两个strings 中一一输入0-9 数字。

如果我按带有标签“5”的QPushButton 并且光标位于QLineEdit(比如QLineEdit 1)上,它应该在QLineEdit 1 中附加“5”,或者如果选择了QLineEdit 2,它应该附加'5' 在QLineEdit 2 和其他QPushButtons 也分别。

【问题讨论】:

    标签: c++ user-interface qt4 qlineedit qpushbutton


    【解决方案1】:

    你可以在你的 ui 类中有一个slot,如下所示

    void MyDialog::numberButtonPressed()
    {
        QPushButton* btn = qobject_cast<QPushButton*>(QObject::sender());
        if (!btn)
            return; // TODO error handling
        ui.lineEdit->setText(ui.lineEdit->text() + btn->text());
    }
    

    然后将QObject::connect 的所有数字按钮指向slot

    干杯

    【讨论】:

    • 完成你的答案:检查哪个 QLineEdit 有焦点来更改其文本:QLineEdit* lineEdit = ui.lineEdit-&gt;hasFocus() ? ui.lineEdit : ui.lineEdit2 ; lineEdit-&gt;setText(lineEdit-&gt;text() + btn-&gt;text())
    • 感谢您的回复。我无法正确解释您的答案,请您详细说明。请确保我正在使用 QT Creator
    【解决方案2】:

    在 QT Creator 中将按钮添加到 UI 中的插槽后,转到函数并使用 hasFocus() 检查它是否具有焦点。

    例如

    void MainWindow::on_pushButton_clicked()
    {
        if(ui->lineEdit_1->hasFocus)
        {
            ui->lineEdit_1->setText("your text");
        }
        else if(ui->lineEdit_2->hasFocus)
        {
            ui->lineEdit_2->setText("your text");
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-14
      • 2014-11-18
      • 2022-01-16
      • 1970-01-01
      • 2019-03-13
      • 1970-01-01
      • 2020-06-03
      • 2019-11-27
      相关资源
      最近更新 更多