MFC ダイアログ内でQWinWidgetを使用していますが、QWinWidget 自体が正しく描画されておらず、キーボード入力を正しく処理していません。
塗り直し【未解決】
QWinWidget 内に QTableWidget があります。QTableWidget をスクロールすると、スクロールを停止するまで再描画されず、その時点ですべてが再描画されます。同様に、QTableWidget のセルに入力できます。コントロールは、上下にスクロールして強制的に再更新するまで更新されません (スクロールが停止すると再更新されます)。
この QWinWidget は MFC CDialog に格納されているため、CDialog の OnPaint メソッドをオーバーライドして QWinWidget::repaint メソッドのみを呼び出してみましたが、これには逆の問題があり、QWinWidget のみが更新され、CDialog が再描画されず、アーティファクトが発生します。 . QWinWidget::repaint と CDialog::OnPaint を呼び出すと、OnPaint メソッドをオーバーライドしないのと同じ結果になります。誰かがこの問題を見たことがありますか、それを解決する方法を知っていますか?
キーボード入力 [解決済み]
QWinWidget 内のどのコントロールも、タブ キーまたは矢印キーに正しく応答しません。タブ/矢印キーは、QWinWidget 全体 (およびすべての子コントロール) を単純にスキップします。QWinWidget 内をクリックしてコントロールを選択しても、次に Tab キーを押すと、QWinWidget 全体からフォーカスが完全にスキップされます。
QWinWidget には QWinWidget::focusNextPrevChild と QWinWidget::focusInEvent の 2 つの関数があり、どちらにも「\reimp」というコメント ヘッダーがあることに気付きました。正しいタブ機能を得るために、これらの関数をオーバーライドする必要がありますか? もしそうなら、正しいタブ機能のためにこれらの機能をどのように実装できますか。