Qt编程—去掉标题栏和设置窗口透明用法
2013-07-25 12:37
429 查看
原文:http://blog.csdn.net/liuyang1990i/article/details/8227342
学习Qt编程,有时候我们很想做出好看又比较炫的画面,这时就常用到qt上的一些技巧。
这里我以一个小例子来展示qt的这些技巧,此qt编程写的,如图:(去掉标题栏和设置窗口透明后)
![](https://img-blog.csdn.net/20130531125635239)
代码实现部分:
.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
就写到这里了,亲,有收获吗?
学习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
就写到这里了,亲,有收获吗?
相关文章推荐
- Qt编程—去掉标题栏和设置窗口透明用法
- Qt编程—去掉标题栏和设置窗口透明用法
- 去掉标题栏和设置窗口透明用法
- Qt编程—去掉标题栏和设置窗口透明用法
- qt中如何去掉主窗口标题栏
- qt中如何去掉主窗口标题栏
- QT下的几种透明效果(QPalette背景白色,窗口设置setWindowOpacity,QPainter使用Clear模式绘图)
- QT 中QMessageBox的用法中文按钮,设置背景,窗口LOGO
- Qt5 去掉窗口标题栏,去掉任务栏显示,窗口置顶的方法
- 吃饭睡觉学QT(14)- QT不规则窗口(QT去掉边框,QT窗口背景设为透明)
- Qt 技巧:去除对话框边框 + 设置窗口可移动和透明
- Qt 背景透明、无边框标题栏、鼠标拖动、定时器、获取屏幕分辨率,设置初始位置
- Qt设置窗口背景透明
- Qt设置窗体标题栏隐藏和窗口是否有任务栏图标
- Windows编程里,怎样设置窗口背景透明
- qt中如何去掉主窗口标题栏
- qt中如何去掉主窗口标题栏
- Qt 技巧:去除对话框边框 + 设置窗口可移动和透明
- Qt 去掉窗体标题栏、窗体透明、窗体圆角(一)
- QT入门:怎么写无边框(标题栏)的窗口、透明窗口、圆角控件