2011-02-01 216 views
1

在QT聖人的幫助下,我能夠實現這個窗口,具有所需的佈局和可調整大小的行爲。現在我有另一個有趣的問題。QT:複雜的佈局和無縫的窗口背景圖像

我希望我的整個窗口有一個「repeat-xy」無縫模式。如果我將它應用到一個沒有佈局和內部小部件的簡單窗口,它可以很好地工作。不過,我現在有一個小部件內部的「樹」,我不能將樣式表設置爲爲每個人繪製無縫背景圖像,因此看起來不自然。圖像必須是我擁有的所有小部件拓撲的基礎。問題是,當我將它應用到底部的全窗口小部件時它是不可見的,因爲它具有頂部的小部件。

有沒有解決方案?也許「透明的小部件」,可以包含可見的小部件?

My window

+0

我想我在尋找一個「格」樣的解決方案,不畫本身,讓什麼樣的視覺它下面的「彪炳」的容器 – JasonGenX 2011-02-01 22:25:35

回答

2

我做了以下使用只有CSS,有一個QPlainTextEdit,兩個QPushButton和一個QLineEdit。在圖像我增加了一個紅色邊框的QPlainTextEdit只有如此可以看出,規則如下

QWidget#Form{ 
    background-image: url(:/img/elephant_pattern.gif); 
} 
QPlainTextEdit{ 
    background:transparent; 
    border:1px solid red; 
} 

正如你所看到的一切,我不得不被設置背景透明的我想要的部件。

enter image description here

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); 
} 

enter image description here

雖然my_widget的的paintEvent爲空,QPushButtons繪製。 :-)