1

カスタムウィジェット階層を実装しようとしています: QMainWindow-> QFrame-> MyWidget-> QFrame->MySubWidget

MyWidget クラスは次のようになります。

    class MyWidget : public QWidget {
        Q_OBJECT
    public:
        MyWidget(QWidget *parent = 0, ...);
        ...
    public slots:
        void SlotFunction(int i);
        ...
    private:
        MySubWidget *sub_w;
        QFrame *sub_frame;
        ...
    }

MyWidget コンストラクター中に MySubWidget を作成しようとすると、すべての MySubWidget 要素が意図したとおりに表示されます。

    MyWidget::MyWidget (...) : QWidget(parent) {
        ...
        sub_frame = new QFrame(this);
        ...
        sub_w = new MySubWidget(sub_frame); // commented out on a runtime test
    }

しかし、実行時にサブウィジェットを追加しようとすると、sub_frame は空白のままになります。すなわち信号反応:

    void MyWidget::SlotFunction(int i) {
        sub_w = new MySubWidget(sub_frame); // update, repaint, show and hide methods aren't helphul
    }
4

2 に答える 2

0

あなたはあなたの機能に到達していますか?

putのnewインスタンスを作成する前に、関数の上部にあるもの:MySubWidget

qDebug() << Q_FUNC_INFO;

スロットは正しく接続されていますか?

Qtは、ランタイム警告を使用してスロットを接続できないかどうかを通知します。Qt Creatorに表示されるデバッグ出力を見ると、スロットに到達しなかった理由が記載されている場合があります。

subframe見えますか?

オブジェクトの親が表示されていない場合、子オブジェクトを表示または非表示にすると、親が表示されている場合にのみ影響します。

お役に立てば幸いです。幸運を。

于 2012-12-27T23:13:19.413 に答える