少数のQTextEditsのtextChanged()シグナルを追跡しようとしています。信号を発するテキスト編集に関係なく同じことをしたい:QListWidgetが空になった場合は、関連するチェックボックスをオフにし、そうでない場合はチェックしたままにします。私がそうしている機能は次のとおりです。
void MainWindow::changed()
{
QString tempStr = ui->hNMRedit->toPlainText();
if(tempStr != "")
{
ui->checkList->item(0)->setCheckState(Qt::Checked);
}
else
{
ui->checkList->item(0)->setCheckState(Qt::Unchecked);
}
}
現在のアプローチでは、すべてのQTextEditに対してこのような関数を作成する必要があります。各関数には、実質的に同一のコードが含まれています。各テキスト編集を配列に保存した場合(QListWidgetで関連するインデックスを見つけることができるように)、このようなスロットを持つことは可能でしょうか?
void MainWindow::changed(QWidget *sender) // for whichever text edit emits the
// textChanged() signal
{
QString tempStr = sender->toPlainText();
if(tempStr != "")
{
// I would potentially use some sort of indexOf(sender) function on the array I
// mentioned earlier here... a little new to Qt, sorry
ui->checkList->item(array.indexOf(sender))->setCheckState(Qt::Checked);
}
else
{
// same as above...
ui->checkList->item(array.indexOf(sender))->setCheckState(Qt::Unchecked);
}
}
これは可能ですか、それともテキスト編集ごとに個別のスロットを作成する必要がありますか?さらに詳しい説明が必要な場合はお知らせください。
最後に、QLineEditsとQTextEditsの唯一の意味のある違いは、デフォルトのサイズだと思います。一貫性を保つために、UI全体でこれらのオブジェクトの1つを使用する必要がありますか?
ありがとう!!!