Qt 如何在另一个QFrand的中间创建QGrand?

Qt 如何在另一个QFrand的中间创建QGrand?,qt,qwidget,qtgui,qlayout,Qt,Qwidget,Qtgui,Qlayout,我是否可以使用Qt执行以下操作: 我需要两个 qFrase>代码> s,一个(子)位于另一个(父)的中间,当我改变了父代码> qFrase时,孩子们也会调整大小。 如何设置布局或其他类似的操作 正如下图所示,黄色是孩子,白色是父母 像这样的怎么样 #include <QApplication> #include <QFrame> namespace { static const auto STYLE_SHEET = "QFrame#MyFrame {border

我是否可以使用Qt执行以下操作:

我需要两个<代码> qFrase>代码> s,一个(子)位于另一个(父)的中间,当我改变了父代码> qFrase<代码>时,孩子们也会调整大小。 如何设置布局或其他类似的操作

正如下图所示,黄色是孩子,白色是父母


像这样的怎么样

#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();
}
#包括
#包括
名称空间{
static const auto STYLE_SHEET=“QFrame#MyFrame{边框:10px纯白;背景:黄色}”;
}
int main(int argc,char*argv[])
{
质量保证申请a(argc、argv);
qf框架;
f、 setObjectName(QStringLiteral(“MyFrame”));
f、 设置样式表(样式表);
f、 show();
返回a.exec();
}

好的,让我们两人一组。。。但第一个答案更好

#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();
}
#包括
#包括
#包括
int main(int argc,char*argv[])
{
质量保证申请a(argc、argv);
QFrame f1;
f1.设置样式表(“背景:白色”);
QFrame f2;
设置样式表(“背景:黄色”);
QHBox布局图l和f1;
l、 刚毛含量边缘(10,10,10,10);
l、 addWidget(&f2);
f1.调整大小(200200);
f1.show();
返回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);
并重写父框架的父窗口小部件的resizeEvent事件,执行相同的操作

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

执行此操作后,只需小心执行第一个setfixedsize.show(),这样它就可以获得正确的宽度和高度。

您的答案只包含一个
QFrame
。OP询问嵌套的
QFrame
s。您创建一个
QFrame
对象,为其设置一个布局,然后在该布局中添加另一个
QFrame
对象。到底是什么问题?