QT:复杂布局和无缝窗口背景图像

QT:复杂布局和无缝窗口背景图像,qt,Qt,在你们QT专家的帮助下,我能够实现这个窗口,具有所需的布局和可调整大小的行为。现在我有另一个有趣的问题 我希望我的整个窗口有一个“重复xy”无缝模式。如果我将它应用于一个没有布局和内部小部件的简单窗口,它就可以完美地工作。然而,我现在在小部件中有一个小部件的“树”,我不能设置样式表来为每个小部件绘制无缝的背景图像,因为它看起来不自然。图像必须是我拥有的所有小部件拓扑的基础。问题是,当我将它应用于底部所有窗口覆盖小部件时,它是不可见的,因为它上面有小部件 有解决办法吗?也许“透明小部件”可以包含可

在你们QT专家的帮助下,我能够实现这个窗口,具有所需的布局和可调整大小的行为。现在我有另一个有趣的问题

我希望我的整个窗口有一个“重复xy”无缝模式。如果我将它应用于一个没有布局和内部小部件的简单窗口,它就可以完美地工作。然而,我现在在小部件中有一个小部件的“树”,我不能设置样式表来为每个小部件绘制无缝的背景图像,因为它看起来不自然。图像必须是我拥有的所有小部件拓扑的基础。问题是,当我将它应用于底部所有窗口覆盖小部件时,它是不可见的,因为它上面有小部件

有解决办法吗?也许“透明小部件”可以包含可见的小部件


编写您自己的小部件,继承QWidget。重新实现paintEvent并将其保留为空。小部件本身不会被绘制,但它的子部件会被绘制

my_widget::my_widget( QWidget* parent ) : QWidget( parent )
{
}

void my_widget::paintEvent( QPaintEvent* p_event )
{
    // left empty to let my_widget be invisible
}

test_mw::test_mw( QWidget *parent ) : QMainWindow( parent )
{
    test_widget = new my_widget( this );

    QHBoxLayout* layout = new QHBoxLayout();

    QPushButton* button0 = new QPushButton( "Button 0", 0 );
    QPushButton* button1 = new QPushButton( "Button 1", 0 );

    layout->addWidget( button0 );
    layout->addWidget( widget );

    test_widget->setLayout( layout );

    setCentralWidget( test_widget );
}


尽管my_小部件的paintEvent为空,但两个QpushButton都已绘制。:-)

Qt的早期版本中有一个QWidget::setBackgroundOrigin()方法


现在所有的款式都完成了。参见示例

我仅使用CSS制作了以下内容,有一个QPlainTextEdit、两个QPushButton和一个QLineEdit。在图中,我向QPlainTextEdit添加了一个红色边框,以便可以看到它,规则如下

QWidget#Form{
    background-image: url(:/img/elephant_pattern.gif);
}
QPlainTextEdit{
    background:transparent;
    border:1px solid red;
}
正如您所看到的,我所需要做的就是在我想要的小部件中设置背景透明

我想我正在寻找一种“div”类型的解决方案,一种不绘制自身并让其下方的视觉“穿透”的容器