2012-04-20 24 views

Trả lời

4

After a long search , myself found a good solution , check out this ..

#include <QtGui> 
class myMainWindow:public QMainWindow 
{ 
public: 
    myMainWindow():QMainWindow() 
    { 
    setMask((new QPixmap("saturn.png"))->mask()); 


    QPalette* palette = new QPalette(); 
    palette->setBrush(QPalette::Background,QBrush(QPixmap("saturn.png"))); 
    setPalette(*palette); 

    setWindowFlags(Qt::FramelessWindowHint);  
    QWidget *centralWidget = new QWidget(this); 
    QGridLayout *layout = new QGridLayout(); 

    centralWidget->setLayout(layout); 

    QPushButton* button1 = new QPushButton("Button 1"); 
    button1->setFixedSize(80,50); 

    layout->addWidget(button1,0,0); 

    setCentralWidget(centralWidget); 

    }; 
    ~myMainWindow(){}; 
}; 

int main(int argc, char **argv) 
{ 
    QApplication app(argc, argv); 
    myMainWindow *window = new myMainWindow();  

    window->resize(600, 316);   
    window->show(); 
    return app.exec(); 
} 
+0

Nice! Đối với những thứ tương tự khác: Xem ví dụ về đồng hồ: http://qt-project.org/doc/qt-4.8/widgets-shapedclock-shapedclock-cpp.html Đối với PySide, tại đây: http://qt.gitorious.org /pyside/pyside-examples/blobs/ce9b2dfe456f38a166314dc2807a6b27cd944127/examples/widgets/shapedclock.py ví dụ đơn giản cho màn hình splash: 'self.img_Check = QPixmap ("tài nguyên/some_transparent_image.png") \t \t \t \t self.lab = QSplashScreen (self.img_Check) \t \t self.lab.setWindowFlags (Qt.Tool | Qt.WindowStaysOnTopHint) \t \t self.lab.setMask (self.img_Check.mask()) \t \t self.lab.setPixmap (self.img_Check) \t \t self.lab.show() ' – SilentSteel

+0

Không bị rò rỉ' QPixmap' trên mỗi công trình? – Ruslan

+0

@Ruslan yeah, nhưng mainwindow chỉ được tạo một lần trong hầu hết các ứng dụng qt –

2

Here là công thức để tạo tiện ích con với màu nền bán trong suốt. Chỉ cần mở rộng từ đó bằng cách làm cho nền hoàn toàn trong suốt, sau đó hiển thị hình ảnh cây trên đầu trang đó làm hình nền. Lưu ý rằng widget sẽ vẫn hoạt động giống như một widget hình chữ nhật liên quan đến việc đặt ra các phần tử con của nó, vì vậy bạn có thể cần phải giải quyết điều này bằng cách sử dụng một số bố trí tùy chỉnh bên trong hình dạng cây.

0

Bắt đầu từ các tài liệu cho QWidget::setMask. Nó có một phiên bản mà có một QBitmap và một trong đó có một QRegion. Đây là chức năng cơ bản để có được một widget trong suốt. Bộ công cụ này cũng bao gồm một ví dụ đồng hồ sử dụng phiên bản QRegion - tôi nghi ngờ một bitmap cũng dễ dàng như vậy.

Các vấn đề liên quan