나는 아래의 것들을 할 Qt의를 사용할 수 : 다른 (부모)의 중간에다른 QFrame의 중간에 QFrame을 만드는 방법은 무엇입니까?
내가 두 QFrame
의 하나 (아이)가 필요합니다, 그리고 내가 부모 QFrame
을 변경할 때, 아이들은 너무 크기가 조정됩니다 .
어떻게 레이아웃을 설정하거나 다른 일을 할 수 있습니까?
아래 그림과 같이 노란색은 자식이며 흰색은 부모입니다.
나는 아래의 것들을 할 Qt의를 사용할 수 : 다른 (부모)의 중간에다른 QFrame의 중간에 QFrame을 만드는 방법은 무엇입니까?
내가 두 QFrame
의 하나 (아이)가 필요합니다, 그리고 내가 부모 QFrame
을 변경할 때, 아이들은 너무 크기가 조정됩니다 .
어떻게 레이아웃을 설정하거나 다른 일을 할 수 있습니까?
아래 그림과 같이 노란색은 자식이며 흰색은 부모입니다.
어떻게 이런 일에 대해?
#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();
}
답변에는 단 하나의 'QFrame'만 포함됩니다. OP는 중첩 된 'QFrame'에 대해 질문했습니다. – m7913d
자, 두 개의 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();
}
다음과 같은 한 가지 해결책을 찾으려고했습니다.
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 이벤트를 다시 작성 오른쪽 너비와 높이를 얻을 수 있습니다.
당신은'QFrame' 객체를 생성하고 그 객체에 레이아웃을 설정하고 그 레이아웃 안에 또 다른'QFrame' 객체를 추가합니다. 문제는 정확히 무엇입니까? – thuga