有人可以解释一下如何根据图像中某些对象的形状在qt中制作一个窗口,例如我有一个树的图像,使用它我需要创建一个树形的窗口..
问问题
2463 次
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 回答