[QT] 小知识集锦
qt 中关于 QWidget 的背景颜色和背景图片的设置
首先设置autoFillBackground 属性为真
然后定义一个QPalette 对象
设置QPalette 对象的背景属性(颜色或图片)
最后设置QWidget 对象的Palette
实例:
QWidget *widget = new QWidget;
widget->setAutoFillBackground(true);
QPalette palette;
palette.setColor(QPalette::Background, QColor(192,253,123));
//palette.setBrush(QPalette::Background, QBrush(QPixmap(":/background.png")));
widget>setPalette(palette);
qt 程序界面怎样把标题栏去掉 ?
window.setWindowFlags( Qt::FramelessWindowHint); 即可
setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint); 可前端显示
设置 QWidget 不可最大化
this -> setFixedSize( 480 , 800 );
设置窗体透明
this.setWindowOpacity(0.5);
隐藏 qt 程序的任务栏条
mainwindow.setWindowFlags( Qt::Tool | Qt::StaysOnTopHint ); //
保持在最前面可选
透明窗体实现
一. 背景刷成黑色, 前景色设为白色。 方法一、paltette 方式,经测试,该方法不会影响到其他控件, 推荐使用
QPalette bgpal = palette();
bgpal.setColor (QPalette::Background, QColor (0, 0 , 0, 255));
//bgpal.setColor (QPalette::Background, Qt::transparent);
bgpal.setColor (QPalette::Foreground, QColor (255,255,255,255)); setPalette (bgpal);
方法二、stylesheet 方式 影响子控件的方法是:
setStyleSheet ("background-color: rgb(0,0,0);color: rgb(255,255,255);");
不影响子控件的方法是:
setStyleSheet ("venus--TitleBar {background-color: rgb(0,0,0);color: rgb(255,255,255);}");
二. 圆角控件 用stylesheet 方式
setStyleSheet ("border:2px groove gray;border-radius:10px;padding:2px 4px;");
三. 圆角窗口 RoundRectWin::RoundRectWin() { QPalette p = palette(); QPixmap img("roundrect.png");
QBitmap mask("roundrect_mask.png");
p.setBrush(QPalette::Window, QBrush(img));
setPalette(p);
setMask(mask);
resize(img.size());
//setWindowFlags(Qt::FramelessWindowHint);// 这句会去掉标题栏 } 注意:mask 的图多余部分设为白色
四. 半透明窗口
1. 窗口整体透明,但是窗体上的控件不透明。 通过设置窗体的背景色来实现,将背景色设置为全透。 QPalette pal = palette();
pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00)); setPalette(pal); 试验效果:
窗体标题栏不透明;
窗体客户区上的控件不透明,QLabel 控件只是字显示,控件背景色透明; 窗体客户区完全透明。
另外从网上看到的方法: setAttribute(Qt::WA_TranslucentBackground, true) ; 试验的结果是类似于上面的方法,但有时候窗体会被一些杂色斑点填充,未找到原因。
2. 窗口及其上面的控件都半透明:
setWindowOpacity(0.7)
试验效果:窗口及控件都半透明。注意不能够setWindowFlags(Qt::FramelessWindowHint); 要不就不起作用
3. 窗口整体不透明,局部透明:
在Paint 事件中使用Clear 模式绘图。
void TestWindow::paintEvent( QPaintEvent* )
{ QPainter p(this);
p.setCompositionMode( QPainter::CompositionMode_Clear ); p.fillRect( 10, 10, 300, 300, Qt::SolidPattern ); }
试验效果:绘制区域全透明。如果绘制区域有控件不会影响控件。
以上实验均是基于Directfb 的Qte 测试。在Linux 下及Windows 下效果会略有不同。 比如在Windows 下第3 个实验,绘制区域就是一个黑窟窿,如果Window 本身半透,则是Window 下面的内容加上半透效果,不是全透明效果。
五. 控制QPixmap 的alpha
QPixmap temp(pixmapTop.size()); temp.fill(Qt::transparent);
QPainter p(&temp);
p.setCompositionMode(QPainter::CompositionMode_Source);
p.drawPixmap(0, 0, pixmapTop);
p.setCompositionMode(QPainter::CompositionMode_DestinationIn);
p.fillRect(temp.rect(), QColor(0, 0, 0, alpha)); //--lable 显示前景图片 ui->label->setScaledContents(true);
ui->label->setPixmap(temp);
六. layout 的边界 layout->setMargin (0);
鼠标移入事件
virtual void enterEvent ( QEvent * event )
[QT] 小知识集锦的更多相关文章
- 蓝牙Bluetooth技术小知识
蓝牙Bluetooth技术以及广泛的应用于各种设备,并将继续在物联网IoT领域担任重要角色.下面搜集整理了一些关于蓝牙技术的小知识,以备参考. 蓝牙Bluetooth技术始创于1994年,其名字来源于 ...
- HTML+CSS中的一些小知识
今天分享一些HTML.CSS的小知识,希望能够对大家有所帮助! 1.解决网页乱码的问题:最重要的是要保证各个环节的字符编码一致! (1)编辑器的编辑环境的字符集(默认字符集):Crtl+U 常见的编码 ...
- iOS APP开发的小知识(分享)
亿合科技小编发现从2007年第一款智能手机横空出世,由此开启了人们的移动智能时代.我们从一开始对APP的陌生,到现在的爱不释手,可见APP开发的出现对我们的生活改变有多巨大.而iOS AP ...
- Unix系统小知识(转)
Unix操作系统的小知识 2.VI添加行号/翻页/清屏 .在对话模式时(即输完Esc再输入: ),输入“:set number”可以将编辑的文本加上行号.跟玩俄罗斯方块一样方便的上下左右移动箭头的快捷 ...
- salesforce 零基础开发入门学习(十)IDE便捷小知识
在这里介绍两个IDE的便捷开发的小知识. 一) 本地调试 由于salesforce代码只能提交以后才能调试,所以很多时候调试代码很麻烦.新版增加了一个特性:即可以在本地调试相关的代码或者查看相关代码运 ...
- Jquery:小知识;
Jquery:小知识: jQuery学习笔记(二):this相关问题及选择器 上一节的遗留问题,关于this的相关问题,先来解决一下. this的相关问题 this指代的是什么 这个应该是比较好理 ...
- HTML小知识---Label
今天知道了一个html小知识: <input type="checkbox" id="chkVersion" /> ...
- Unicode和汉字编码小知识
Unicode和汉字编码小知识 将汉字进行UNICODE编码,如:“王”编码后就成了“\王”,UNICODE字符以\u开始,后面有4个数字或者字母,所有字符都是16进制的数字,每两位表示的256以内的 ...
- Java异常的一个小知识
有以下两个代码: package com.lk.A; public class Test3 { public static void main(String[] args) { try { int a ...
随机推荐
- IETESTER ie10.local 下载
下载地址:ietester.ie10.exe.local.zip 技术交流QQ群: 15129679
- c语言 多重排序
经过了两天,终于会了. #include<stdio.h> #include<string.h> struct A { char name[100]; int gread; } ...
- PHP中静态方法(static)与非静态方法的使用及区别
今天再次学习这个内容,总是糊里糊涂的,想弄明白!!! static关键字用来修饰属性.方法,称这些属性.方法为静态属性.静态方法.static关键字声明一个属性或方法是和类相关的,而不是和类的某个特定 ...
- mac系统下ionic环境配置
本人是在mac环境下进行配置的: 下载nodejs:https://nodejs.org/download/ 并双击安装 Cordova and Ionic command-line tools 安装 ...
- linux下sar tool command note
linux下的sar工具简介 我习惯使用的命令是 : sar -r -f /var/log/sa/sa24 sar 既能报告当前数据,也能报告历史数据 不带选项执行会以10分钟为间隔报告自午夜 ...
- IP欺骗:要虚拟很多IP的情况:在一台机上虚拟的IP跨网段的处理,可通过在服务器端添加路由来实现
要虚拟很多IP的情况:在一台机上虚拟的IP跨网段的处理,可通过在服务器端添加路由来实现. 例: [服务器] IP:192.168.0.1 [测试机] IP:192.168.0.2 测试机上添加的虚拟 ...
- 如何在 CentOS 7 中安装、配置和安全加固 FTP 服务
步骤 1:安装 FTP 服务器 1. 安装 vsftpd 服务器很直接,只要在终端运行下面的命令. # yum install vsftpd 2. 安装完成后,服务先是被禁用的,因此我们需要手动启动, ...
- maven 错误处理
如果是方法找不到或者返回参数变了,那么肯定是包被升级了,那么到仓库下把对应的包删掉,然后maven自动下载最新的. 如果是包找不到,或者类找不到,那么把maven ->update maven可 ...
- java多线程(五)之总结(转)
引 如果对什么是线程.什么是进程仍存有疑惑,请先Google之,因为这两个概念不在本文的范围之内. 用多线程只有一个目的,那就是更好的利用cpu的资源,因为所有的多线程代码都可以用单线程来实现.说这个 ...
- IDEA编辑区光标样式修改
转自:http://blog.csdn.net/aosica321/article/details/52787418 Intellj IDEA光标为insert状态,无法删除内容以前用得是社区版的ID ...