首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在另一个QFrame中间创建QFrame?

如何在另一个QFrame中间创建QFrame?
EN

Stack Overflow用户
提问于 2017-05-24 10:29:39
回答 3查看 993关注 0票数 0

我可以使用Qt做以下事情吗:

我需要两个QFrame,一个(子)在另一个(父)的中间,当我改变父QFrame时,子对象也会调整大小。

我如何设置布局或其他事情可以这样做。

就像下面的图片一样,黄色是孩子,白色是父母。

EN

回答 3

Stack Overflow用户

发布于 2017-05-24 15:53:38

好的,让我们成为两个QFrame..。但第一个答案更好。

代码语言:javascript
复制
#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();
}
票数 1
EN

Stack Overflow用户

发布于 2017-05-24 15:53:58

我试着找到一个像下面这样的解决方案。

代码语言:javascript
复制
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事件,执行相同的操作

代码语言:javascript
复制
child_frame ->setFixedSize(parent_frame->geometry().width() - 4, parent_frame->geometry().height() - 4);
child_frame ->move(2,2);

在执行this.show()之后,您需要注意的唯一一件事就是执行第一个setfixedsize,以便它可以获得正确的宽度和高度。

票数 0
EN

Stack Overflow用户

发布于 2017-05-24 14:03:11

像这样怎么样?

代码语言:javascript
复制
#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();
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44147958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档