Russian Qt Forum

Qt => Вопросы новичков => Тема начата: once_again_abc от Апрель 16, 2012, 11:56



Название: QTableWidget + QLineEdit
Отправлено: once_again_abc от Апрель 16, 2012, 11:56
не работает.

Создаю QTableWidget, в несколько ячеек помещаю QLineEdit-ы.
Пытаюсь отловить сигнал об изменении данных в QLineEdit-ах через cellChanged и itemChanged - оба сигнала регистрируются, но сами сигналы не приходят.
В чем может быть дело и как получить номер строки/столбца элемента, в котором произошли изменения?


Название: Re: QTableWidget + QLineEdit
Отправлено: Kurles от Апрель 16, 2012, 13:34
когда создаешь QLineEdit'ы записывай в них самих номера строки/столбца, сигнал регестрируй на сам QLineEdit, и работай уже с сохраненными значениями row/column.

Код
C++ (Qt)
   for (int i=0; i < 10; ++i)
   {
       QLineEdit *le = new QLineEdit(this);
       le->setProperty("row", i);
       le->setProperty("column", 0);
       tableWidget->setCellWidget(i, 0, le);
       connect(le, SIGNAL(textChanged(QString)), this, SLOT(onTextChanged));
       le = new QLineEdit(this);
       le->setProperty("row", i);
       le->setProperty("column", 1);
       tableWidget->setCellWidget(i, 1, le);
       connect(le, SIGNAL(textChanged(QString)), this, SLOT(onTextChanged));
   }
в обработчике:

Код
C++ (Qt)
   QLineEdit *le = qobject_cast<QLineEdit*>(sender());
   if (!le)
       return;
   int row = le->property("row").toInt();
   int column = le->property("column");
   // ...
но по хорошему вместо setCellWidget лучше использовать делегат, тогда все родные сигналы QTableWidget будут испускаться.


Название: Re: QTableWidget + QLineEdit
Отправлено: kambala от Апрель 16, 2012, 15:17
а чем собственно не устраивают встроенные в ячейку QLineEdit'ы?


Название: Re: QTableWidget + QLineEdit
Отправлено: Kurles от Апрель 16, 2012, 15:24
а чем собственно не устраивают встроенные в ячейку QLineEdit'ы?
они не влияют на данные, адресованые Qt::DisplayRole, следовательно стандартными средствами не отследить изменение значения в ячейках QTableWidget'а.


Название: Re: QTableWidget + QLineEdit
Отправлено: once_again_abc от Апрель 17, 2012, 01:17
а чем собственно не устраивают встроенные в ячейку QLineEdit'ы?
они не влияют на данные, адресованые Qt::DisplayRole, следовательно стандартными средствами не отследить изменение значения в ячейках QTableWidget'а.

спасибо!