Qt窗体基本属性设置
来源:互联网 发布:简述单片机的引脚功能 编辑:程序博客网 时间:2024/06/15 13:03
1、固定窗口的大小:
方法1.设置属性
将最大大小与最小大小设置成一致
将最大大小与最小大小设置成一致
方法2.使用setFixedSize()命令
setFixedSize(365,240); //将窗口设置为固定大小365*240
2、隐藏标题栏:
setWindowFlags(Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint);
3、设置背景:
方法一、重写paintEvent()事件。在该事件中用画笔QPainter的方式画整个背景。
void MainWin::paintEvent(QPaintEvent *event){ QPainter painter(this); painter.drawPixmap(0,0,width(),height(),QPixmap("./wallpaper/11.jpg"));}
方法二:用调色板QPalette。
步骤:
1定义一个QPalette对象
2设置QPalette对象的背景属性(颜色或图片)
3设置 autoFillBackground属性为真
4最后设置QWidget对象的Palette
(下边代码中:ptr为指向要设置的widget的指针。)
步骤:
1定义一个QPalette对象
2设置QPalette对象的背景属性(颜色或图片)
3设置 autoFillBackground属性为真
4最后设置QWidget对象的Palette
(下边代码中:ptr为指向要设置的widget的指针。)
(1) :
用调色板
QWidget *ptr =new QWidget ; QPalette palette; palette.setBrush(QPalette::Background,QBrush(Qt::red)); ptr->setPalette(palette); ptr->setAutoFillbackground(true); QWidget ->show();
该方法中:如果只有前三句是不会生效的。必须加上最后ptr->setAutoFillbackground(true)才生效!
(2) :
QPalette palette = ptr->palette();palette.setBrush(QtPalette::Background,QBrush(Qt::red));ptr->setPalette(palette);ptr->setAutoFillbackground(true);
该方法中:比前一种方法的改进之处是:因为palette()这个函数在QWidget体系和 QGraphicsWidget体系中都有,所以:上述代码可以在这两种体系中通用!
(3) :
QPalette palette = ptr->palette();palette->setBrush(QPalette::Active,QPalette::Window,QBrush(....))ptr->setPalette(palette);ptr->setAutoBackground(true);
推荐用这种方法,大家可以查看一下
QPalette::setBrush ( ColorGroup group, ColorRole role, const QBrush & brush )
这个重载函数的声明,这个函数可以设置很多东西!其第二个参数指定要设置的角色!这里举几个例 子: 如果ptr指向的是一个QListWidget或者QTextEdit对象,则将第二个参数设置 成:QPalette::Text,则是设置其中文字的颜色,如果是QPalette::BrightText,则是设置当被选中时:文字的颜色,而Palette::Bright则是设置选中时高亮背景的颜色或者图片。因为该函数可以设置的角色众多,所以功能也相对强大!
QPalette::setBrush ( ColorGroup group, ColorRole role, const QBrush & brush )
这个重载函数的声明,这个函数可以设置很多东西!其第二个参数指定要设置的角色!这里举几个例 子: 如果ptr指向的是一个QListWidget或者QTextEdit对象,则将第二个参数设置 成:QPalette::Text,则是设置其中文字的颜色,如果是QPalette::BrightText,则是设置当被选中时:文字的颜色,而Palette::Bright则是设置选中时高亮背景的颜色或者图片。因为该函数可以设置的角色众多,所以功能也相对强大!
方法三 、用样式表。
ptr->setStyleSheet("background-color:yellow;"); //设置背景颜色ptr->setStyleSheet("background-image:url(:/folder/aa.bmp);"); //设置背景图片
此外,还有一些很有意思的方法,比如用setHtml(),insetHtml()这种用HTML语言的方式来指定的等等
4、窗口透明
1.窗口整体透明,但是窗体上的控件不透明。
通过设置窗体的背景色来实现,将背景色设置为全透。
窗体标题栏不透明;
窗体客户区上的控件不透明,QLabel控件只是字显示,控件背景色透明;
窗体客户区完全透明。
另外从网上看到的方法:
2.窗口及其上面的控件都半透明:
3.窗口整体不透明,局部透明:
在Paint事件中使用Clear模式绘图。
以上实验均是基于Directfb的Qte测试。在Linux下及Windows下效果会略有不同。
比如在Windows下第3个实验,绘制区域就是一个黑窟窿,如果Window本身半透,则是Window下面的内容加上半透效果,不是全透明效果。
通过设置窗体的背景色来实现,将背景色设置为全透。
QPalette pal = palette(); pal.setColor(QPalette::Background, QColor(0x00,0xff,0x00,0x00)); setPalette(pal);试验效果:
窗体标题栏不透明;
窗体客户区上的控件不透明,QLabel控件只是字显示,控件背景色透明;
窗体客户区完全透明。
另外从网上看到的方法:
setAttribute(Qt::WA_TranslucentBackground, true);试验的结果是类似于上面的方法,但有时候窗体会被一些杂色斑点填充,未找到原因。
2.窗口及其上面的控件都半透明:
setWindowOpacity(0.7);试验效果:窗口及控件都半透明。
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下面的内容加上半透效果,不是全透明效果。
5、异形(圆角)窗口
#include "widget.h"#include "ui_widget.h"Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget){ ui->setupUi(this); setWindowFlags(Qt::FramelessWindowHint| windowFlags()); setAttribute(Qt::WA_TranslucentBackground); setWindowOpacity(0.8);}Widget::~Widget(){ delete ui;}void Widget::paintEvent(QPaintEvent *event){ QPainter pai(this); pai.drawPixmap(0,0,QPixmap("L:/1.png")); // 圆角图片}
阅读全文
0 0
- Qt窗体基本属性设置
- 窗体设置的一些基本属性(一部分)
- qt常用的基本属性设置
- Qt笔记:设置控件的基本属性
- QT 设置窗体透明
- Qt设置窗体背景
- QT设置窗体透明
- 窗体常用属性设置
- winform窗体属性设置
- SWT窗体属性设置
- QT 窗体常用属性介绍
- Qt 子窗体透明度设置
- Qt 设置窗体无边框
- QT窗体背景色设置
- Qt设置窗体背景颜色
- 设置窗体无边框属性
- 窗体位置设置(StartPosition属性)
- QT widget窗体常用属性介绍
- kafka入门:简介、使用场景、设计原理、主要配置及集群搭
- 条件时间选择器
- linux-1 history 历史命令调用以及常用快捷键
- mybatis sql问题
- 双核处理-01背包问题
- Qt窗体基本属性设置
- hnust
- java运算符的一些小知识点和数据类型的补充
- java基础练习-3
- java中String、StringBuffer、StringBuilder的区别 java中String、StringBuffer、StringBuilder是编程中经常使用的字符串类,他们之间的区
- 136. Single Number
- 基本数据指标--01
- Unity之HoloToolkit问题收集
- PYTHON-sklearn.preprocessing