繁体   English   中英

用图像中的形状在Qt中创建一个窗口

[英]Create a window in qt with shape from an image

有人可以解释一下我如何根据图像中某个对象的形状在qt中创建一个窗口,例如我有一个树的图像,用它我需要创建一个树形的窗口。

经过长时间的搜索,我自己找到了一个好的解决方案,请查看此。

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

是制作具有半透明背景色的小部件的方法。 只需通过使其完全透明的背景从此处展开,然后将树图像作为该背景图像显示在其顶部即可。 请注意,在布局其子元素方面,该小部件的行为仍将类似于矩形小部件,因此您可能需要使用树形内部的一些自定义布局来处理此问题。

QWidget::setMask的文档开始。 它具有采用QBitmap的版本和采用QRegion的版本。 这是获取透明小部件的基本功能。 该工具包还包括一个使用QRegion版本的时钟示例-我怀疑位图也一样容易。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM