如何检查两个QLineEdit如果它们不是空的

时间:2015-05-20 00:23:42

标签: c++ qt qt5

我有三个控件,两个QTextLine和一个QPushButton

启动程序时,添加按钮将被禁用,并且必须为两个QTextLine非空,才能启用添加按钮。

我有以下代码,但它不能正常工作:

void Question_Answer::on_newQuestion_txt_textChanged(const QString &arg1)
{
    if(arg1.isEmpty())
    {
        ui->addNewQuestion_btn->setEnabled(false);
    }
    else
    {
        ui->addNewQuestion_btn->setEnabled(true);
    }
}

void Question_Answer::on_newAnswer_txt_textChanged(const QString &arg1)
{
    if(ui->newAnswer_txt->text().isEmpty())
    {
        ui->addNewQuestion_btn->setEnabled(false);
    }
    else
    {
        ui->addNewQuestion_btn->setEnabled(true);
    }
}

现在,如何检查两个QPushButton是否为空,以及其中是否为空,将禁用添加按钮。

2 个答案:

答案 0 :(得分:5)

只需连接一个插槽即可处理textChanged

LineEdits个信号
void Question_Answer::onTextChanged(const QString &arg1){
    if(ui->newAnswer_txt->text().isEmpty() || ui->newQuestion_txt->text().isEmpty()){
        ui->addNewQuestion_btn->setEnabled(false);
    }else{
        ui->addNewQuestion_btn->setEnabled(true);
    }
}

答案 1 :(得分:0)

在标题类中:

// ...
private slots:
    void onTextChanged();
// ...

在源文件中:

// Setup the connections in the constructor.

void Question_Answer::onTextChanged()
{
    const bool editable1 = ui->newAnswer_txt->text().size() > 0;
    const bool editable2 = ui->newQuestion_txt->text().size() > 0;
    ui->addNewQuestion_btn->setEnabled( editable1 && editable2 );
}