zoukankan      html  css  js  c++  java
  • Qt编程—去掉标题栏和设置窗口透明用法

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

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

     

    代码实现部分:

    .h文件

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

    mainwindow.cpp

     

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


     main.cpp文件

    
    
    1. <span style="font-size:14px;">#include <QtGui/QApplication>  
    2. #include <QTextCodec>  
    3. #include "mainwindow.h"  
    4.   
    5. int main(int argc, char *argv[])  
    6. {  
    7.     QApplication a(argc, argv);  
    8.     QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));  
    9.     QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));  
    10.     QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));  
    11.     MainWindow w;  
    12.     w.show();  
    13.   
    14.     return a.exec();  
    15. }  
    16. </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.   
    3. { QPainter p(this);   
    4.   
    5.    p.setCompositionMode( QPainter::CompositionMode_Clear );  
    6.  p.fillRect( 30, 30, 300, 300, Qt::SolidPattern );   
    7. }   
    8. </span>  

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

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

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

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

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

  • 相关阅读:
    CI框架 -- 核心文件 之 Loader.php(加载器)
    CI框架 -- 核心文件 之 Lang.php(加载语言包)
    CI框架 -- 核心文件 之 Input.php(输入数据处理文件)
    CI框架 -- 核心文件 之 Hooks.php
    CI框架 -- 核心文件 之 Exceptions.php
    CI框架 -- 配置文件config.php
    网站后台发通知页面效果图
    校内通知-Notifications表增加老师,家长,学生发送范围字段
    jqGrid设置指定行的背景色
    SQLServer数据库监控代码
  • 原文地址:https://www.cnblogs.com/cainiaoaixuexi/p/3267797.html
Copyright © 2011-2022 走看看