2016 - 2024

感恩一路有你

qt窗口透明却显示黑色背景 Qt怎么设置主窗口透明(可以设置透明度)上面的子控件不透明?

浏览量:1967 时间:2021-03-16 14:59:11 作者:admin

Qt怎么设置主窗口透明(可以设置透明度)上面的子控件不透明?

setWindowOpacity(0.7)用在构造函数里的。 如果要动态的修改,需要重新计算和绘画背景的,这个工作量很大,不太可能提供这么一个方法的。 你可以看看qt的setWindowOpacity的源代码,整合到自己代码里。 或者,你在修改了Opacity以后,强制刷新整个客户区试试。

Qt中设置窗口背景透明?

附件里是效果图。Qt提供了setOpacity的函数,但是使用之后,窗体所有子控件都变成同样的透明色了。这里我们利用setMask()函数,以QBitmap为参数,通过对QBitmap做精细的操作(关键在于QBitmap支持用painter直接在上面绘制),最终达到这样的效果:我们想要透明的地方变成透明,我们想要放置部件的地方变成非透明可见的。这样就达到了我们想要的效果。具体实现的方法也很简单:如果你想在paintEvent里面绘制任何内容,也要同时在QBitmap上做绘制,前提是在QBitmap上绘制的时候画笔的rgb设置成QRgb(0,0,0)。道理我已经讲明白了。大家可以自己把代码弄到自己的类里面实验一下。例子中只是最简单的演示,按照这个思路我想可以做出更多更灵活的应用的,比如可以让窗体介于透明和非透明之间(这里需要准备一个对应的透明色的png图片,或者使用相应的Qt函数来做都行)。最关键的是这种方法下透明度的操作不会影响到子控件的。

求助,qt窗体怎样实现局部透明?

Qt实现圆角窗口例子

局部透明其实就是实现一个不规则窗体,实际上qt自带的例子就有

qt新建子窗口时将主窗口指针传给子窗口后子窗口背景变透明?

你那个指针是传递什么参数吗?如果不是的话,那你大可直接传递一个标志位,bool index

如果index== true子窗口就执行如下代码:

QPalette pal = palette()

pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00))

setPalette(pal)

如果index == false 就不执行。当然了,这些判断和执行都是在子窗口的构造函数中进行的,

能用C语言做出一个图形化界面是什么水平?

能用c语言做出一个图形化界面,说明你对c语言的graph库已经大致掌握了。

如果能做到图形的描画,文本编辑,文本滚动,字体放大及定时显示,自绘进度条,自绘按钮,显示内存区的无闪烁刷新,区域填充,透明处理等等功能,说明界面部分做的基本过关。

要论水平,只能说刚入门。单就一般c来说,各种文件的存储,打开,删除,重命名操作;内存动态申请及释放的内存管理;调用外部可执行文件;I/O操作;与外部的串行/并行通讯,网络通讯及共享,高端内存使用等等,还要学习的很多。

在语法上,结构struct,联合union的使用,也很重要,内存块操作,字符串操作,各种数据类型,浮点运算,以及相关的math.h,stdlib.h等头文件定义的函数,建议挨个试一遍。

做完了以上这些,你就可以正式入职了。

当然,这只是C。VC 的话,还要花C两倍的功夫。




qt窗口透明却显示黑色背景 qt透明背景不能更新 qt设置控件透明度

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。