• 7546阅读
  • 12回复

Qt水晶透明的效果怎么做出来? [复制链接]

上一主题 下一主题
离线lavender
 
只看楼主 倒序阅读 楼主  发表于: 2012-05-25
我想做一个对话框,就是输入用户名,密码然后登录这样的,但是我非常想把它
做成水晶透明的感觉,就像这张图一样




就是中间那个登录对话框,它的透明效果应该怎么做出来?而且怎么样才能让对话框的周围
跟图片上一样有阴影效果?
菜鸟跪求各路高手,如能得到帮助感激不尽哪。
离线jdwx

只看该作者 1楼 发表于: 2012-05-25
win7的阴影是随着边框存在的,没边框就没有阴影。
当然可以自己画一个阴影,简单的办法,PS一个图片,带阴影。
发帖时要说明:操作系统、Qt版本、编译器,这样能更快的得到回复。
离线xiongyu

只看该作者 2楼 发表于: 2012-05-25
setWindowFlags(Qt::FramelessWindowHint);    
\\ 设置窗口为无边框
setAttribute(Qt::WA_TranslucentBackground);
\\设置透明。

然后你就用PS画一张透明的PNG,设置为背景, 就透明的了。 子控件不会透明
为自己而已努力吧... 我的博客 http://xycode.org
离线jsjs2001
只看该作者 3楼 发表于: 2012-05-26
2楼正解
离线lavender
只看该作者 4楼 发表于: 2012-05-26
回 2楼(xiongyu) 的帖子
我那么做了,但是透明的区域显示的是黑色,网上查资料说是如果父对象为空的话会出现这种情况
下面是我的代码,请问下大神该怎么修改? 其实应该说父对象就是对话框它本身吧,怎么样才能解决透明区域是黑块的问题?

#include <QtGui>
#include "loginDialog.h"

loginDialog::loginDialog(QWidget *parent)
  : QDialog(parent, Qt::FramelessWindowHint)
{
  usernameLabel = new QLabel(tr("用户名"));
  passwordLabel = new QLabel(tr("密码));
  usernameEdit = new QLineEdit;
  passwordEdit = new QLineEdit;
  loginButton = new QPushButton(tr("登录"));

  setAttribute(Qt::WA_TranslucentBackground, true);
  background.load(":/images/background.png");
  setFixedSize(370, 266);
  
  layout = new QHBoxLayout;
  layout->addWidget(usernameLabel);
  layout->addWidget(usernameEdit);

  setLayout(layout);
}

void loginDialog::paintEvent(QPaintEvent *)
{
  QPainter painter(this);
  painter.drawPixmap(0, 0, 380, 276, background);
}
离线xiongyu

只看该作者 5楼 发表于: 2012-05-27
应该与什么父窗口无关吧, 同一份代码, 我4.7.4在windows linux 都能正常运行。
QT 4.8.2 在WINDOWS黑的, LINUX正常透明。


或者你直接设置这个也可以透明


setWindowOpacity(float);
为自己而已努力吧... 我的博客 http://xycode.org
离线lavender
只看该作者 6楼 发表于: 2012-05-28
回 5楼(xiongyu) 的帖子
换了台机子用windows系统就好了... 哎,还在不停地赶作业中
离线xiongyu

只看该作者 7楼 发表于: 2012-05-28
我刚刚试了一下, 用QMainWindow 来做窗体怎么做都可以透明
用QDialog 之类的, 就要看机子。
为自己而已努力吧... 我的博客 http://xycode.org
离线tsuibin

只看该作者 8楼 发表于: 2012-05-29
opacity
离线hechunfeng
只看该作者 9楼 发表于: 2012-05-29
我试的,Windows下的都可以实现
离线lavender
只看该作者 10楼 发表于: 2012-05-30
原来是这样,之前用debian 6编译运行 透明区域都是黑色,换了ubuntu还是黑色,
那这是跟系统有关还是跟硬件有关呢?
离线jyiigpgf
只看该作者 11楼 发表于: 2012-06-04
回 7楼(xiongyu) 的帖子
额. 不要说看机子这种话啊.  
Dialog也可以做的.
离线xiongyu

只看该作者 12楼 发表于: 2012-06-04
回 11楼(jyiigpgf) 的帖子
   我测试的结果看, 不是看机子, 是看系统。
ARCHLINUX 都可以
WINDOWS 7 重装前没问题, 重装后只有QMainWindow可以
为自己而已努力吧... 我的博客 http://xycode.org
快速回复
限100 字节
 
上一个 下一个