
最近因为项目需要,用 Qt 写不规则窗体,要求是无边框,且半透明。
无边框
无边框其实很好写,Qt里有现成的方法:setWindowFlags(Qt::FramelessWindowHint);
1 2 3 |
MainWindow w; w.setWindowFlags(Qt::FramelessWindowHint); w.show(); |
这样你就能看到一个无边框无菜单栏无状态栏无按钮的一个窗体了。
半透明
半透明的方法有两种,一种是窗体和控件有着不同的透明度(窗体半透明控件不透明);一种是窗体和控件有着相同的透明度。
1.窗体透明控件不透明;
1 |
w.setAttribute(Qt::WA_TranslucentBackground, true); |
1.1窗体可调透明度,控件不透明;
在1的基础上,在窗体的paintEvent中添加:
1 2 3 4 5 |
void MainWindow::paintEvent(QPaintEvent *event){ QPainter painter(this); painter.fillRect(this->rect(), QColor(0,0,0,0)); } //set the father Window BGColor is R0:G0:B0, Opacity is 0(0~255); |
2.窗体和控件均半透明;
1 2 3 4 |
w.setPalette(QPalette( QColor(0, 0, 0)) ); w.setWindowOpacity(0.2); //set the Window BGColor is R0:G0:B0, Opacity is 0.2(0~1); |
2014.12.07补充
1 |
w.setWindowFlags(Qt::Tool); |
可使窗体不在任务栏显示。
如无注明,均为原创。转载请注明: 转载自MITGAI`S THINKING
本文链接地址: Qt 不规则窗体 – 无边框半透明
本文链接地址: Qt 不规则窗体 – 无边框半透明
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
如果本文对您生活或工作产生了积极影响,那我非常高兴。
如果您愿意为文章的内容或想法提供支持,欢迎点击下边的捐赠按钮,资助作者创作更多高价值高品质的内容。
如果您愿意为文章的内容或想法提供支持,欢迎点击下边的捐赠按钮,资助作者创作更多高价值高品质的内容。