ユーザーが検索を実行する前に設定するフラグを選択できるテキスト検索を実行できるようにしたいと思います。現在、設定されたフラグに基づいてさまざまな検索を実行するif/elseステートメントがたくさんあります。これを単純化する方法はありますか?
これが私がこれまでに持っているものです:
void FindDialog::on_btn_find_clicked()
{
const QString find_term = ui->le_find->text();
bool found;
getConditions();
//direction: true -> go backward, false -> go forward
if(dir)
{
//area: true -> description area, false -> example area
if(area)
found = te_desc_ptr->find(find_term, QTextDocument::FindBackward);
else
found = te_code_ptr->find(find_term, QTextDocument::FindBackward);
} else {
if(area)
found = te_desc_ptr->find(find_term);
else
found = te_code_ptr->find(find_term);
}
this->close();
}
void FindDialog::getConditions()
{
//check conditions
//Area: True = Description, False = Example
//Direction: True = Up, False = Down
area = ui->rbtn_desc->isChecked();
dir = ui->rbtn_up->isChecked();
case_sen = ui->cbx_case->isChecked();
whole = ui->cbx_whole->isChecked();
regx = ui->cbx_reg->isChecked();
}
コードは、ユーザーがチェックボックスを選択し、実行する検索の種類を選択したかどうかを確認します。find()ステートメントが少なくなるように、コードを単純化したいと思います。明らかに、オプションを追加すると、if/elseステートメントが増えます。どうすればこれを変更できますか?