• 6105阅读
  • 3回复

[提问]QT 4.8.2如何给对话框窗口加阴影? [复制链接]

上一主题 下一主题
离线lahu
 

只看楼主 倒序阅读 楼主  发表于: 2013-01-17
自定义了一个对话框,去掉了系统的标题栏,自绘该部分,然后想要给这个对话框窗口加上阴影效果,因为用的地方比较多,窗口尺寸也不一样,所以不想使用在paintevent里自绘带有阴影的png透明图的方法来实现,就想着使用QGraphicsDropShadowEffect来做,代码如下:
    MyDialog baseDialog(this);    QGraphicsDropShadowEffect *shadow = new QGraphicsDropShadowEffect(&baseDialog);    shadow->setBlurRadius(5.0);    shadow->setColor(Qt::red);    shadow->setOffset(0,0);    baseDialog.setGraphicsEffect(shadow);    ret = baseDialog.exec();    ......
问题是这样出来的窗口没有阴影的效果(如果有,应该是红色的,我在windows xp sp3下做的实验),为什么没有阴影出来?是这样做的方法有问题,还是设置的参数不对?(我给QLabel设置同样的代码,QLabel里的文字有阴影效果,但是貌似窗口不行)求高人指教,谢谢!











离线lahu

只看该作者 1楼 发表于: 2013-01-21
自己顶,没有牛人知道怎么弄呢?调了很久都弄不出来这个阴影效果
离线unizii

只看该作者 2楼 发表于: 2013-01-31
楼主听说过九切片不?可以先用PS画4个不同方向的1px的渐变线和4个转角。然后在paintEvent里通过拉伸变换绘制上去,响应winEvent里的WM_NCHITTEST事件实现窗口标题栏的操作。以后的窗体就继承这个QWidget就行了
离线chexa

只看该作者 3楼 发表于: 2013-07-02
shadow->setOffset(0,0) 应该是 shadow->setOffset(20,20)吧?
快速回复
限100 字节
 
上一个 下一个