我有三个控件,两个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
是否为空,以及其中是否为空,将禁用添加按钮。
答案 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 );
}