在QT圣贤的帮助下,我能够实现此窗口,具有所需的布局和可调整大小的行为。现在我有另一个有趣的问题。
我希望我的整个窗口都有一个“repeat-xy”无缝模式。如果我将它应用于没有布局和内部小部件的简单窗口,它可以完美地工作。但是,我现在在小部件中有一个小部件的“树”,我无法设置样式表来为每个人绘制无缝背景图像,因为它看起来不自然。图像必须是我拥有的所有窗口小部件拓扑的基础。问题是,当我将它应用于底部全窗口覆盖小部件时,它是不可见的,因为它上面有小部件。
有解决方案吗?也许“透明小部件”可以包含可见的小部件?
答案 0 :(得分:2)
我仅使用CSS进行了以下操作,有一个QPlainTextEdit,两个QPushButton和一个QLineEdit。在图像中我添加了一个红色边框到QPlainTextEdit只有这样可以看到,规则如下
QWidget#Form{
background-image: url(:/img/elephant_pattern.gif);
}
QPlainTextEdit{
background:transparent;
border:1px solid red;
}
正如你所看到的,我所需要的只是在我想要的小部件中设置透明背景。
答案 1 :(得分:0)
编写自己的继承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_widget的paintEvent为空,但是都绘制了两个QPushButtons。 : - )
答案 2 :(得分:0)
早期版本的Qt中有一个QWidget :: setBackgroundOrigin()方法。
现在所有的风格都完成了。请参阅示例http://doc.qt.nokia.com/latest/widgets-styles.html