如何根据 Qt 中的焦点从 QPushButtons 输入字符到 QLineEdits

How to enter a character to QLineEdits from QPushButtons depending on the focus in Qt

我正在使用 Qt Creator 制作一个 UI。
UI 包含两个或多个 QLineEdit 和十个 QPushButton 来输入0-9 个数字字符到 QLineEdits。如何在两个 QLineEdit 中一一输入 0-9 数字 string

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

您的 ui class 中可以有一个 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

干杯

在 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");
    }
}