2017-05-24 20 views
0

나는 아래의 것들을 할 Qt의를 사용할 수 : 다른 (부모)의 중간에다른 QFrame의 중간에 QFrame을 만드는 방법은 무엇입니까?

내가 두 QFrame의 하나 (아이)가 필요합니다, 그리고 내가 부모 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

답변에는 단 하나의 'QFrame'만 포함됩니다. OP는 중첩 된 'QFrame'에 대해 질문했습니다. – m7913d

1

자, 두 개의 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); 

등) (같은 일

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

당신이 this.show을 후 첫 setfixedsize을주의 할 필요가있는 유일한 일을 수행 parent_frame의 부모 위젯의 resizeEvent 이벤트를 다시 작성 오른쪽 너비와 높이를 얻을 수 있습니다.