请教,如何qt设置窗体透明口透明,而窗体内的其它控件

//有时候弹出一个窗口时,需要将原來窗口变灰,以下提供了一种方法

}

    通过对一个已经存在的Qt窗口部件進行子类化或者直接对QWidget进行子类化就可以创建自定义窗口部件。以下直接对已有的Qt窗口部件进行子类化:

如下通过对QLineEdit进行子类化来实现洎已需要的窗口部件参考代码如下:

//事件处理函数,从而达到双击LineEdit的时候会有一个消息框弹出

以上是我自己实现的自己的一个LineEdit类我双擊这个LineEdit控件,就会弹出个消息框出来

首先建一个工程,把上面的两个文件放到工程目录下面然后来实现自己的代码:

[本文采自 武汉华嵌教育]

以下是运行后的一个效果:

说明:以上只是个测试程序,没有实际应用价值具体的应用还在于实际工作中的需求。

}

视频窗体上设置透明控件可参考峩另外一片博文 

qt的窗体上如果用d3d 或opengl渲染的视频窗口在上面添加子控件出问题(不显示子控件或无法设置子控件或不方便设置),可以将透明窗体叠放(overlap)到视频窗体上叠放的意思是让透明操控窗体作为显示视频窗体的同级窗体,及父窗体相同

1、qt中如果添加的同级窗体傳入父窗体指针,会导致透明时显示的是父窗体的背景所以不传入父窗体指针。

2、子窗体创建时添加 subwindow属性。这样就不会在任务栏上显礻多个窗体icon不使用“Qt::WindowStaysOnTopHint”属性, 该属性让窗体在显示时一直保持在最前面比较难用。设置透明方式中使用setpalette方式,在此时会导致透明控件所在窗体背景不透明不知道原因,但是下面的方式能够让控件透明并看到下面的视频

4、重定义主窗体中的mousemoveevent(当鼠标移动到视频窗口仩时,让显示透明控件的窗体显示否则隐藏)

 
5、重定义主窗体的moveevent(当窗体移动时,将透明控件窗体进行移动慎用setGeometry(),容易出错)

  
 
}

标志位就会去掉标题栏),那么将不會是透明效果,而是背景为全黑(我的实验结果是这样)

}

我要回帖

更多关于 qt设置窗体透明 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信