2017-05-24 20 views
0

が、私は以下の事を行うにはQtを使用することができます。私は2 QFrame秒を必要とする別のQFrameの途中でQFrameを作成する方法は?

を、1(子)が別の(親)の途中にある、と私は親QFrameを変更すると、子どもたちはあまりにもサイズが変更されます。

レイアウトやその他の設定をどうすればできますか?

下の画像のように、黄色は子供、白は親です。

enter image description here

+1

'QFrame'オブジェクトを作成し、それにレイアウトを設定し、そのレイアウト内に別の' QFrame'オブジェクトを追加します。問題は何ですか? – thuga

答えて

-1

どのようにこのようなものでしょうか?

#include <QApplication> 
#include <QFrame> 

namespace { 
    static const auto STYLE_SHEET = "QFrame#MyFrame {border: 10px solid white; background: yellow}"; 
} 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 

    QFrame f; 
    f.setObjectName(QStringLiteral("MyFrame")); 
    f.setStyleSheet(STYLE_SHEET); 
    f.show(); 

    return a.exec(); 
} 
+0

あなたの回答に含まれるのは1つの「QFrame」だけです。 OPはネストされた 'QFrame'について尋ねました。 – m7913d

1

[OK]を2つのQFrameにしましょう...しかし、最初の答えが良いです。

#include <QApplication> 
#include <QFrame> 
#include <QHBoxLayout> 

int main(int argc, char *argv[]) 
{ 
    QApplication a(argc, argv); 

    QFrame f1; 
    f1.setStyleSheet("background: white"); 

    QFrame f2; 
    f2.setStyleSheet("background: yellow"); 

    QHBoxLayout l(&f1); 
    l.setContentsMargins(10, 10, 10, 10); 
    l.addWidget(&f2); 

    f1.resize(200, 200); 
    f1.show(); 

    return a.exec(); 
} 
0

私は以下のような解決策を見つけようとしました。

QFrame *parent_frame = new QFrame(this);//this means parent_frame's parent widget 
QFrame *child_frame = new QFrame(parent_frame); 

child_frame ->setFixedSize(parent_frame->geometry().width() - 4, parent_frame->geometry().height() - 4); 
child_frame ->move(2,2); 

とparent_frameの親ウィジェットのresizeEventイベントを書き換える、同じことを行う

child_frame ->setFixedSize(parent_frame->geometry().width() - 4, parent_frame->geometry().height() - 4); 
child_frame ->move(2,2); 

あなたはthis.show(行った後最初のsetfixedsizeを行うに注意する必要がある唯一のもの)適切な幅と高さを得ることができます。