5

画像内のオブジェクトの形状に応じてqtでウィンドウを作成する方法を説明してもらえますか?たとえば、木の画像を使用して、木の形でウィンドウを作成する必要があります.

4

3 に答える 3

4

長い検索の後、私自身が良い解決策を見つけました。これをチェックしてください..

#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();
}
于 2012-04-20T09:31:00.370 に答える
2

これは、半透明の背景色でウィジェットを作成するためのレシピです。そこから背景を完全に透明にして拡大し、その上に木の画像を背景画像として表示します。子要素のレイアウトに関しては、ウィジェットは引き続き長方形のウィジェットのように動作するため、ツリー形状内のカスタムレイアウトを使用してこれを処理する必要があることに注意してください。

于 2012-04-20T08:58:55.607 に答える
0

のドキュメントから始めQWidget::setMaskます。QBitmap を取るバージョンと QRegion を取るバージョンがあります。これは、透明なウィジェットを取得する際の基本的な機能です。ツールキットには、QRegion バージョンを使用した時計の例も含まれています。ビットマップも同様に簡単だと思います。

于 2012-04-20T10:31:37.193 に答える