QStackedLayoutについてお聞きしたいと思います。 今、私はQStackedLayout に追加され、いくつかのウィジェットを持っていると私はそのようなSTHをしたい: がするとページXへのユーザスイッチ、ページX.私はそれを行うことができますどのようにQT QStackedLayoutの問題
をリフレッシュ? リフレッシュ時に実行したいカスタムコードがあります ありがとうございました
QStackedLayoutについてお聞きしたいと思います。 今、私はQStackedLayout に追加され、いくつかのウィジェットを持っていると私はそのようなSTHをしたい: がするとページXへのユーザスイッチ、ページX.私はそれを行うことができますどのようにQT QStackedLayoutの問題
をリフレッシュ? リフレッシュ時に実行したいカスタムコードがあります ありがとうございました
私のコメントに基づいて、現在のページが変更されたときに生成される信号を探しているので、画面の基礎となるデータを更新できるようです。その場合、最大スロットをフックすることが望ましいでしょう。void QStackedWidget::currentChanged(int index)
はい、私はこれを試しました。connect(stackwidget、SIGNAL(currentChanged(int))、X、マイスロット(update_from_db)); しかし、Xは何ですか? Thx – Bear
Xは、スロットを実装するオブジェクトへのポインタになります。あなたが "slot(update_from_db)"を持っている場所; "SLOT(update_from_db(int)));" –
私は{(接続(すべてのウィジェットのウィンドウ)のため (構文を無視する)、それはスロット を実装しかし、私は、私は前にこれを試してみました、今後 に示したされるオブジェクトを予測することはできませんオブジェクトである必要があります知っていますThx – Bear
すべての "ページ"はQWidgetベースのクラスです。ウィジェットが正しくペイントされない場合は、ウィジェットのコードをチェックする必要があります。一般的に、ページを切り替えると、目に見えるウィジェット自体が再描画されます。あなたのウィジェットがいくつかのイベントを処理しない場合、あなたは不具合を見ることができます。
とにかく、あなたの "ページ"を再描画する場合は、QWidget::update()
または(ブルートフォース方式)QWidget::repaint()
に電話する必要があります。
私の意見では、この状況を処理する最良の方法は継承によるものです。仮想更新機能を持つQWidget
から派生したクラスを作成します。これをスタックウィジェットのすべてのページの基本クラスとして使用します。スタックされたウィジェットを含むクラスでは、スタックされたウィジェットのcurrentChanged(int index)
信号にスロットを接続します。そのスロットで、現在のウィジェットqobject_cast
を基本型に取得し、成功した場合はその上でupdate関数を呼び出します。
スタックウィジェットのページである各クラスは、更新関数をオーバーライドし、必要に応じてその情報を更新する必要があります。
「ページXをリフレッシュする」とはどういう意味ですか? –
データベースからデータを再度読み込み、 – Bear