学习Qt编程,有时候我们很想做出好看又比较炫的画面,这时就常用到qt上的一些技巧。

这里我以一个小例子来展示qt的这些技巧,此qt编程写的,如图:(去掉标题栏和设置窗口透明后)

代码实现部分:

.h文件

  1. <span style="font-size:14px;">#ifndef MAINWINDOW_H
  2. #define MAINWINDOW_H
  3. #include <QMainWindow>
  4. #include<QLabel>
  5. #include <QMouseEvent>
  6. #include<QPalette>
  7. namespace Ui {
  8. class MainWindow;
  9. }
  10. class MainWindow : public QMainWindow
  11. {
  12. Q_OBJECT
  13. public:
  14. explicit MainWindow(QWidget *parent = 0);
  15. ~MainWindow();
  16. private:
  17. Ui::MainWindow *ui;
  18. private slots:
  19. void on_pushButton_Set_clicked();
  20. };
  21. #endif // MAINWINDOW_H
  22. </span>

mainwindow.cpp

  1. <span style="font-size:14px;">#include "mainwindow.h"
  2. #include "ui_mainwindow.h"
  3. MainWindow::MainWindow(QWidget *parent) :
  4. QMainWindow(parent),
  5. ui(new Ui::MainWindow)
  6. {
  7. ui->setupUi(this);
  8. this->setWindowTitle("QQ ");
  9. this->setWindowIcon(QIcon(":/images/po.jpg"));
  10. this->setWindowFlags(Qt::FramelessWindowHint);//去掉标题栏
  11. this->setGeometry(QRect(950, 55, 350, 250));//可设置窗口显示的方位与大小
  12. //this->setWindowOpacity(0.7);//设置透明1-全体透明
  13. this->setAttribute(Qt::WA_TranslucentBackground, true);//设置透明2-窗体标题栏不透明,背景透明
  14. this->resize(300,300);//显示大小
  15. }
  16. MainWindow::~MainWindow()
  17. {
  18. delete ui;
  19. }
  20. </span>

main.cpp文件


  1. <span style="font-size:14px;">#include <QtGui/QApplication>
  2. #include <QTextCodec>
  3. #include "mainwindow.h"
  4. int main(int argc, char *argv[])
  5. {
  6. QApplication a(argc, argv);
  7. QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));
  8. QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));
  9. QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));
  10. MainWindow w;
  11. w.show();
  12. return a.exec();
  13. }
  14. </span>

本例中用到的透明是 : 窗体标题栏不透明,背景透明。

这里介绍几种设置透明效果的用法:
1.this->setWindowOpacity(0.7);//全体透明(指的是窗体,标题栏以及上面所有的控件都透明)里面的参数可以控制透明度。

2.窗口整体透明,但是窗体上的控件不透明。 通过设置窗体的背景色来实现,将背景色设置为全透:

代码如下:

  1. <span style="font-size:14px;"> pal = palette();
  2. pal.setColor(QPalette::background, QColor(0x00,0xff,0x00,0x00));
  3. setPalette(pal);</span>

3.窗体标题栏不透明,背景透明。(本例中用到的)
this->setAttribute(Qt::WA_TranslucentBackground,true);

4.窗口整体不透明,局部透明:在Paint事件中使用Clear模式绘图。

  1. <span style="font-size:14px;">void mainwindow::paintEvent( QPaintEvent* )
  2. { QPainter p(this);
  3. p.setCompositionMode( QPainter::CompositionMode_Clear );
  4. p.fillRect( 30, 30, 300, 300, Qt::SolidPattern );
  5. }
  6. </span>

绘制区域全透明,如果绘制区域有控件不会影响控件的透明。

5.这里说一下本程序中怎样去掉标题栏

this->setWindowFlags(Qt::FramelessWindowHint);//去掉标题栏

转载注明:http://blog.csdn.net/liuyang1990i/article/details/8227342

就写到这里了,亲,有收获吗?

Qt编程—去掉标题栏和设置窗口透明用法的更多相关文章

  1. Qt 隐藏标题栏后实现窗口拖动、设置窗口透明

    隐藏标题栏 setWindowFlags(Qt::CustomizeWindowHint); setWindowFlags(Qt::FramelessWindowHint); 两个函数都可以去掉标题栏 ...

  2. vc设置窗口透明

    ::SetWindowLong(GetSafeHwnd(), GWL_EXSTYLE, ::GetWindowLongPtr(GetSafeHwnd(), GWL_EXSTYLE) | WS_EX_L ...

  3. Qt 技巧:去除对话框边框 + 设置窗口可移动和透明

    1.去除对话框标题栏和边框 在构造函数里设置:    this->setWindowFlags(Qt::FramelessWindowHint); Qt::Dialog     (按照对话框的形 ...

  4. Unity 设置窗体透明

    设置窗口透明.窗口置顶.鼠标穿透    方法一. 缺点:边缘不平滑,有毛边 参考博客: 1.https://alastaira.wordpress.com/2015/06/15/creating-wi ...

  5. Qt写一个截屏工具(窗口透明)

    最近发现好多次打开QQ仅仅想用它来截屏 ⊙﹏⊙b汗 不如自己来写一个截屏工具,集成到自己的小工具箱里面 动手之前考虑一下要怎么实现,我考虑过的方案大概有下面两种  : 1. 监控全局鼠标事件 (真是“ ...

  6. Qt 之 设置窗口边框的圆角(使用QSS和PaintEvent两种方法)

    Qt在设置窗口边框圆角时有两种方式,一种是设置样式,另一种是在paintEvent事件中绘制窗口.下面分别叙述用这两种方式来实现窗口边框圆角的效果. 一.使用setStyleSheet方法 this- ...

  7. CentOS下Qt窗口透明效果失效,成黑色背景的问题

    一.问题 Linux系统下Qt窗口的透明效果成了黑色,但同样的代码在windows机子上有透明效果,主要是修改系统的配置,仅在centos6.3及其以上版本实验过.其他系统可以相应配置. 二.问题运行 ...

  8. Qt之设置窗口背景

    以前遇到的很多小知识,从今天开始都一点一点记录下来...     窗口背景无非两种:背景色.背景图片.Qt中窗口背景如何设置?下面介绍三种方法: 一. QPalette设置背景 二.实现paintEv ...

  9. 【Qt编程】Qt学习之窗口间的相互切换

    在用Qt设计GUI时,经常要设计两个窗口之间的相互切换,即可以从一个窗口跳转到另一个窗口,然后又从另一个窗口跳转回原窗口.下面我们来介绍具体的实现方法: 工程建立及功能描述: 首先,我们建立Qt  G ...

随机推荐

  1. [luogu3952 noip2017] 逛公园 (计数dp+最短路)

    传送门 Description Input Output 输出文件包含 T 行,每行一个整数代表答案. Sample Input 2 5 7 2 10 1 2 1 2 4 0 4 5 2 2 3 2 ...

  2. C#通过SendMessage发送消息,改变其他程序的下拉框控件(ComboBox)的值

    IntPtr cbh= new IntPtr(handle); //ComboBox的句柄 SendMessage(cbh, 0x014D, new IntPtr(-1), "需要选中的下拉 ...

  3. Python复利

    Python复利 复利的计算是对本金及其产生的利息一并计算,也就是利上有利. 复利计算的特点是:把上期末的本利和作为下一期的本金,在计算时每一期本金的数额是不同的.复利的计算公式是:   s = 0 ...

  4. PHP学习总结(3)——PHP入门篇之PHP的echo语句

    Echo语句 echo是PHP中的输出语句,可以把字符串输出(字符串用双引号括起来). 如下代码: <?php echo "Hello world!";?> 注意ech ...

  5. php+mysql 最简单的留言板

    学完了记得动手操作. 測试地址(未过滤) <html> <body> <head><meta http-equiv="Content-Type&qu ...

  6. robot framework环境配置

    1.Robot framework的安装 作用:web自动化测试框架. RF框架是基于python 的,所以一定要有python环境.网上可以自行查找. 下载地址:https://pypi.pytho ...

  7. JavaScript的闭包理解

    因为本人是做java web 开发的,对js仅仅是存在非常浅的理解,js闭包的概念非常早就听说了,可是一直都不明确是什么意思,今天准备梳理一下闭关的概念; 闭包(closure)是Javascript ...

  8. Session会在浏览器关闭后消失吗?

    转  http://blog.csdn.net/rongwenbin/article/details/51784310 Cookie的两种类型   在项目开发中我们时常将需要在客户端(浏览器)缓存的数 ...

  9. $(function(){});里的方法无效问题

    $(function(){})已经是一个匿名函数了,在里面定义的函数已经是私有了,不能全局访问.把函数定义在全局,也就是function外面,这样外部才能调用.

  10. C# web api 中过滤器的使用

    一.开篇 Fiter在Web API中经常会用到,主要用于记录日志,安全验证,全局错误处理等:Web API提供两种过滤器的基本类型:actionfilterattribute,exceptionfi ...