您的位置:首页 > 编程语言 > Qt开发

Qt编程—去掉标题栏和设置窗口透明用法

2013-07-25 12:37 429 查看
原文:http://blog.csdn.net/liuyang1990i/article/details/8227342

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

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

 


代码实现部分:

.h文件

[cpp] view
plaincopyprint?

<span style="font-size:14px;">#ifndef MAINWINDOW_H  

#define MAINWINDOW_H  

  

#include <QMainWindow>  

#include<QLabel>  

#include <QMouseEvent>  

#include<QPalette>  

  

namespace Ui {  

    class MainWindow;  

}  

  

class MainWindow : public QMainWindow  

{  

    Q_OBJECT  

  

public:  

    explicit MainWindow(QWidget *parent = 0);  

    ~MainWindow();  

  

private:  

    Ui::MainWindow *ui;  

  

private slots:  

    void on_pushButton_Set_clicked();  

};  

  

#endif // MAINWINDOW_H  

  

 </span>  

mainwindow.cpp

 

[cpp] view
plaincopyprint?

<span style="font-size:14px;">#include "mainwindow.h"  

#include "ui_mainwindow.h"  

  

MainWindow::MainWindow(QWidget *parent) :  

    QMainWindow(parent),  

    ui(new Ui::MainWindow)  

{  

    ui->setupUi(this);  

    this->setWindowTitle("QQ ");  

    this->setWindowIcon(QIcon(":/images/po.jpg"));  

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

     this->setGeometry(QRect(950, 55, 350, 250));//可设置窗口显示的方位与大小  

  

    //this->setWindowOpacity(0.7);//设置透明1-全体透明  

    this->setAttribute(Qt::WA_TranslucentBackground, true);//设置透明2-窗体标题栏不透明,背景透明  

    this->resize(300,300);//显示大小  

}  

  

MainWindow::~MainWindow()  

{  

    delete ui;  

}  

  

</span>  

 main.cpp文件


[cpp] view
plaincopyprint?

<span style="font-size:14px;">#include <QtGui/QApplication>  

#include <QTextCodec>  

#include "mainwindow.h"  

  

int main(int argc, char *argv[])  

{  

    QApplication a(argc, argv);  

    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));  

    QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));  

    QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));  

    MainWindow w;  

    w.show();  

  

    return a.exec();  

}  

</span>  

 

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

这里介绍几种设置透明效果的用法:

1.this->setWindowOpacity(0.7);//全体透明(指的是窗体,标题栏以及上面所有的控件都透明)里面的参数可以控制透明度。

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

代码如下:

[cpp] view
plaincopyprint?

<span style="font-size:14px;"> pal = palette();  

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

 setPalette(pal);</span>  

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

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

[cpp] view
plaincopyprint?

<span style="font-size:14px;">void mainwindow::paintEvent( QPaintEvent* )   

  

{ QPainter p(this);   

  

   p.setCompositionMode( QPainter::CompositionMode_Clear );  

 p.fillRect( 30, 30, 300, 300, Qt::SolidPattern );   

}   

</span>  

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

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

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

转载注明:http://blog.csdn.net/liuyang1990i/article/details/8227342
就写到这里了,亲,有收获吗?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  透明