0

QtCreator 2.4.1 に統合されたQtDesignerのバグのため、QWidgetを継承するクラスとして別の定義を作成しました。これにより、 QStackedWidgetのページのレイアウトにウィジェットを配置する際の問題が解決されます。さらに、この複雑な UI はうまく分離されています。

ただし、このソリューションでは、メインフォームとページが別々のクラスであるという問題に陥ります。内部クラスでは、メイン フォーム/ウィンドウの要素 (ウィジェット、スロット) が表示されませんが、ロジックにはそこでの操作 (いくつかのボタンの有効化/無効化、ポップアップのバインドなど) が必要です。

そのような問題をどのように解決すべきか、良いパターンを探しています。ポインターを介してアクセスすることで、Google で見つかったいくつかのアドバイスに従ってみましたが、失敗してアプリケーションがクラッシュしました :-) これは私が探しているものではありません。

4

1 に答える 1

0

このような問題を解決する典型的な Qt の方法は、シグナルを介して行われます。

あなたの場合、ページからいくつかのデータを含む信号を送信できますが、メインフォームにはオブジェクト信号に接続された関連関数(-s)があります。何かのようなもの:

意味

class page : public QObject
{
     Q_OBJECT

...

    signals:
        void my_custom_signal(int value);
};

実装

void page::function()
{
    // some code

    emit my_custom_signal(FORM_SHOW_ABOUT_DIALOG);
}
于 2012-05-30T20:03:56.117 に答える