QDialog
の中のQTable
のセルを編集し、「ok」ボタンQDialog
を押すと、そのセルの値は何もありません(編集前のものでなかった場合)。したがって、OkButton
(つまりOkButton->clicked()
)のスロットでは、QTable
のすべてのセルの値にアクセスします。ただし、最後に編集されたセルはまだ塗りつぶされていません。奇妙な!QTableは最後に編集されたセルに対してどのように動作しますか?
OkButton
を押す前にQTable
のどこかをクリックすると、正常に動作します。つまり、最後に編集したセルの値がQTable->text(row, col)
で表示されます。 誰かが、この現象が発生する原因がここにないことを理解するのを助けてくれますか?
もう1つの興味深い動作:OkButton
のスロットに値が見つからないため、QMessageBox::information()
と呼び出します。デバッグ中に、この文で 'next'(gdbで)と言うと、valueChanged()
シグナルが出力されます(私はそれを捕まえて印刷しています)。なぜこの信号が遅れているのか分かりません。なぜQTable
が以前に変更された値を記録しなかったのですか?
問題は、endEditを呼び出す場所が適切でないことです。私はこれのためだけにサブクラス化したくなかった(どちらも助けにならなかったかもしれない)。私は非常に良い別の回避策を見つけました。私は答えとして下にそれを与えました。 – bbv