Я пытаюсь отслеживать сигнал textChanged() для нескольких QTextEdits. Я хочу сделать то же самое независимо от редактирования текста, испускающего сигнал: снимите соответствующий флажок в 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 — это размер по умолчанию. В пользу сохранения согласованности, должен ли я просто использовать один из этих объектов в своем пользовательском интерфейсе?
Спасибо!!!