-
2019-01-23 10:57:47
ui->label->setStyleSheet("background:transparent;border:2px solid red;");
更多相关内容 -
QWidget设置边框(样式,宽度及颜色)
2016-08-09 11:23:02在使用Qt开发过程中,QWidget作为常用的显示控件经常被用到,但默认的QWidget是不带边框的,有时候我们需要Widget显示边框看起来更有效果些,那么如何设置QWidget的边框呢,设置QWidget边框有多种方式,本篇介绍两种...在使用Qt开发过程中,QWidget作为常用的显示控件经常被用到,但默认的QWidget是不带边框的,有时候我们需要Widget显示边框看起来更有效果些,那么如何设置QWidget的边框呢,
设置QWidget边框有多种方式,本篇介绍两种:
方式1,使用StyleSheet进行设置,例如
//设置widget边框 这个设置会影响Widget上的子控件 ui->widget->setStyleSheet(QString::fromUtf8("border:3px solid blue")); //设置widget_2边框 ui->widget_2->setStyleSheet(QString::fromUtf8("#widget_2{border:3px solid red}"));
在使用过程中一定要指定该Widget控件的名字,否则会影响到它上面的子控件。
方式2:
自定义paintEvent事件,使用QPainter画边框,这个不会影响到它上面的子控件
#ifndef CUSTOMWIDGET_H #define CUSTOMWIDGET_H #include <QWidget> class CustomWidget: public QWidget { public: CustomWidget(QWidget *parent = nullptr); protected: void paintEvent(QPaintEvent *event) override; }; #endif // CUSTOMWIDGET_H
#include "CustomWidget.h" #include <QPaintEvent> #include <QPainter> CustomWidget::CustomWidget(QWidget *parent) :QWidget(parent) { } void CustomWidget::paintEvent(QPaintEvent *event) { QPainter p(this); p.setPen(QColor("green")); //设置画笔记颜色 p.drawRect(0, 0, width() -1, height() -1); //绘制边框 }
运行效果如下:
-
QWidget|QFrame设置背景透明且可以带有边框颜色
2020-12-23 15:02:08QWidget覆盖到该窗口上,将其背景设置为透明即可,但是设置透明之后,其底色的黑色无法消除,经多方CSDN博主的成果于一身,搞定了该需求。 其实就是这么几点: 设置背景透明 setWindowOpacity(1); this->...之前在项目中有个需求:视频播放窗口电子放大功能,需要在播放视频的QWidget上绘制一个可以拖拽的矩形框,但是单独的drawRect并不能获得焦点去拖拽。于是乎就另外想到一个办法使用一个透明的
QWidget覆盖到该窗口上,将其背景设置为透明即可,但是设置透明之后,其底色的黑色无法消除,经多方CSDN博主的成果于一身,搞定了该需求。
其实就是这么几点:
设置背景透明
setWindowOpacity(1); this->setAttribute(Qt::WA_TranslucentBackground, true);
在该窗口绘制一个矩形框,为画刷填充一个任意的颜色,重点:将其透明度降为不为0的数值即可。实现透明效果。
void AlargeShape::paintEvent(QPaintEvent *) { QPainter painter(this); painter.setBrush(QColor(9,151,247,1));//painter区域全部的背景色 painter.setPen(QPen(Qt::red,2,Qt::SolidLine,Qt::RoundCap,Qt::RoundJoin)); painter.drawRect(2, 2, end_pos.x()-X-4,end_pos.y()-Y-4); }
源码:
#include <QFrame> class AlargeShape : public QFrame// QWidget { Q_OBJECT public: QWidget* widgetShape; explicit AlargeShape(QWidget *parent = nullptr); void paint(QPainter &painter); void setWidgetGeometry(QPoint point); signals: private: //设置鼠标拖动窗体时的状态 bool m_move ; /*记录鼠标的世界坐标.*/ QPoint m_startPoint ; /*记录窗体的世界坐标.*/ QPoint m_windowPoint ; private: //记录鼠标所在的位置 QPoint start_pos; QPoint end_pos; int X,Y; //记录父窗体所在的位置 QPoint parent_pos; int parent_width,parent_height; void mousePressEvent(QMouseEvent *event) override; void mouseMoveEvent(QMouseEvent *event)override; void mouseReleaseEvent(QMouseEvent *event)override; void paintEvent(QPaintEvent *)override; public: void SetParentPos(QPoint pos,int w,int h) { parent_pos=pos; parent_width=w; parent_height=h; } void SetStartPos(const QPoint pos){start_pos=pos;} void SetEndPos(const QPoint pos){end_pos=pos;} };
#include "alargeshape.h" #include <QMouseEvent> #include <QPainter> #include <QDebug> #include <qpalette> AlargeShape::AlargeShape(QWidget *parent) //: QWidget(parent) { this->setWindowFlags(Qt::Tool| Qt::FramelessWindowHint|Qt::WindowSystemMenuHint | Qt::WindowStaysOnTopHint); setObjectName("frameAlarge"); setWindowOpacity(1); this->setAttribute(Qt::WA_TranslucentBackground, true); } /************************************************************************ * @描述:改变当前窗口大小,在父窗体的paintEvent中调用 * @参数: * @返回: * @作者:zhontao * @时间:2020-12-23 14:57:57 ************************************************************************/ void AlargeShape::paint(QPainter &painter) { this->show(); this->resize(QSize(end_pos.x()-X,end_pos.y()-Y)); } void AlargeShape::setWidgetGeometry(QPoint point) { X=point.x(); Y=point.y(); this->setGeometry( point.x(), point.y(),0,0); } void AlargeShape::paintEvent(QPaintEvent *) { QPainter painter(this); painter.setBrush(QColor(9,151,247,1));//painter区域全部的背景色 painter.setPen(QPen(Qt::red,2,Qt::SolidLine,Qt::RoundCap,Qt::RoundJoin)); painter.drawRect(2, 2, end_pos.x()-X-4,end_pos.y()-Y-4); } void AlargeShape::mousePressEvent(QMouseEvent *event) { /*当鼠标左键点击时.*/ if (event->button() == Qt::LeftButton) { m_move = true; /*记录鼠标的世界坐标.*/ m_startPoint = event->globalPos(); /*记录窗体的世界坐标.*/ m_windowPoint = this->frameGeometry().topLeft(); } } void AlargeShape::mouseMoveEvent(QMouseEvent *event) { if (event->buttons() & Qt::LeftButton) { //计算父窗口的四个角点坐标 QPoint p_left_top=parent_pos; QPoint p_left_bottom=QPoint(parent_pos.x(),parent_pos.y()+parent_height); QPoint p_right_top=QPoint(parent_pos.x()+parent_width,parent_pos.y()); QPoint p_right_bottom=QPoint(parent_pos.x()+parent_width,parent_pos.y()+parent_height); // 局限矩形仅限于当前窗口内 // /*移动中的鼠标位置相对于初始位置的相对位置.*/ // QPoint relativePos = event->globalPos() - m_startPoint; if( ((event->globalPos().x()-p_left_top.x())-(m_startPoint.x()-m_windowPoint.x()) >=0 )&& ((event->globalPos().x()-p_right_top.x())-(m_startPoint.x()-(m_windowPoint.x()+this->width())) <=0 ) && ((event->globalPos().y()-p_left_top.y())-(m_startPoint.y()-m_windowPoint.y()) >=0)&& ((event->globalPos().y()-p_left_bottom.y())-(m_startPoint.y()-(m_windowPoint.y()+this->height())) <=0) ) { /*移动中的鼠标位置相对于初始位置的相对位置.*/ QPoint relativePos = event->globalPos() - m_startPoint; /*然后移动窗体即可.*/ this->move(m_windowPoint + relativePos ); } } } void AlargeShape::mouseReleaseEvent(QMouseEvent *event) { if (event->button() == Qt::LeftButton) { /*改变移动状态.*/ m_move = false; } }
效果图:
参考博客:https://blog.csdn.net/baidu_28572705/article/details/101520946
https://blog.csdn.net/bianchengjingling22/article/details/88810546
-
PySide QWidget无法设置颜色
2022-03-08 11:42:32默认情况下,子小部件采用窗口的颜色,因此如果希望使用自定义背景颜色,则必须启用该Background属性: w = QtWidget.QWidget(self) w.setAttribute(Qt.Qt.WA_StyledBackground, True) w.setStyleSheet("background-...默认情况下,子小部件采用窗口的颜色,因此如果希望使用自定义背景颜色,则必须启用该Background属性:
w = QtWidget.QWidget(self) w.setAttribute(Qt.Qt.WA_StyledBackground, True) w.setStyleSheet("background-color:red;")
-
QWidget对样式表设置边框无效的解决方法
2019-08-17 23:31:38在对QWidget使用样式表时无效 QWidget#MyWgt{ border:1px solid gray; } 2、原因 原因是QWidget只支持background、background-clip和background-origin属性。官方说明 3、解决方法 3.1 使用QFrame代替QWidget,... -
QT-QWidget颜色设置的三种方法
2019-09-06 10:12:29QWidget是所有用户界面对象的基类,这意味着可以用同样的方法为其它子类控件改变背景颜色。 Qt中窗口背景的设置,下面介绍三种方法。 1.使用QPalette 2.使用Style Sheet 3.绘图事件 一般我不用QSS设置窗口背景,也不... -
qlabel通过setStyleSheet设置边框颜色
2021-06-13 18:50:18用setStyleSheet可以设置qlabel的边框颜色。但是注意,设置border-color属性,或者设置color属性都是不起作用的。只能设置border属性,而且要把bi'a线宽、 -
QT设置矩形的边框颜色和线条粗细
2019-06-22 17:28:31!... !... 用Graphics View做的,但不知道有什么函数可以改变矩形以及其他椭圆等图形的线框颜色和粗细。 只知道调用QcolorDialog...但改变图形边框颜色和粗细的变量,函数,方法,有没有标准对话框都不太了解。求个解决办法 -
QT自定义窗口边框
2018-06-04 20:18:54有时候设计界面需要用到自定义窗口,而使用的功能窗口类包含于设计窗口类之中 -
QWidget设置阴影
2020-03-20 15:58:351.QWidget *widget; 2.为widget设置样式表:widget->setStyleSheet("background-color:#FFFFFF;border-radius:6px;"); //这步不能少否则设置阴影没有效果 3.将子控件放在widget上 4.为widget设置阴影: ... -
Qt——如何在QWidget中设置阴影效果
2022-01-23 13:07:35这是一个用来设置QWidget控件及其子控件阴影效果的类。 父类 继承自:QGraphicsEffect 属性 blurRadius:qeal 模糊半径:可以使用 qreal blurRadius() const 和void setBlurRadius(qreal blurRadius)获取和设置当前... -
Qt 设置窗口边框
2019-07-24 10:38:451.新建一个包含QWidget工程,然后通过ui文件设置样式表:“border: 5px solid red”,并且在窗口中拖入一个新的widget,如下图所示: 事实上,运行效果如下: Ps:所以,看出了吗,最顶层窗口的边框设置是无效的!... -
pyqt5-30. QWidget设置圆角,使用qss设置失败
2021-01-28 15:09:00painter.setRenderHint(QPainter.Antialiasing) ... note: 经过一段时间的使用,我发现当widget做为子控件时,通过qss样式去设置圆角是可以的,但是当widgets作为最底层的界面时,则要通过上面的像素绘画才能修改。 -
Qt设置QWidget背景色4种方法
2020-08-17 22:01:02QWidget是所有用户界面对象的基类,这意味着可以用同样的方法为其它子类控件改变背景颜色。 Qt中窗口背景的设置,下面介绍三种方法。 1.使用QPalette 2.使用Style Sheet 3.绘图事件 一般我不用QSS设置窗口背景,也不... -
QWidget获取窗口某点的颜色
2021-11-05 00:53:23从 QColorDialog 的源码中翻出来并整理了一下: QScreen *screen = QGuiApplication::screenAt(pressPos); if (!screen) screen = QGuiApplication::primaryScreen(); auto gpos = mapToGlobal(pressPos);... -
QT皮肤编程(QT style sheet)总结Qt中设置widget背景颜色/图片的注意事项(使用样式表 setStyleSheet())...
2021-02-11 07:34:48摘要:QT Create中,对button或者window等部件设置背景、颜色、透明等样式时,需要用到style sheet,可以直接在代码里写,也可以在ui设计师里通过右键change style sheet的方法来设置,本人是使用的后面的方式,下面... -
QWidget(长文)
2021-03-20 14:05:59通常,窗口有边框和标题栏。 3、QWidget 的一些没有直接使用。例如,QWidget有一个字体属性,但从不使用它。而是由其子类使用。 4、在实现一个新的小部件时,重新实现sizeHint()为小部件提供一个合理的默认大小并... -
QGridLayout QList QWidget边框
2016-05-26 13:29:10QGridLayout QList QWidget -
QWidget代码设置样式表探讨
2022-05-23 14:06:21前言 众所周知,在QT中修改部件样式,是通过样式表...右击在background-color里面随意设置一个颜色,这就是最简单的样式表设置了。意思是,设置一个蓝色的背景颜色。 有关样式表语句的相关语法,可以慢慢学习,其实还 -
Qt设置边框阴影效果
2019-09-04 10:10:10widget.h #ifndef WIDGET_H #define WIDGET_H #include <QWidget> namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT ... explicit Widget(QWidget *parent = 0... -
调整QDockWidget的边框宽窄
2021-09-08 13:45:28那么调整QDockWidget的边框使用QDockWidget::setContentMargins() 注意1: 不要在QDockWidget调用layout(),或者设置setLayout(),此接口不生效 给QDockWidget添加内容只能使用addWidget() 注意2: 当我们给dockWidget中... -
pyqt QWidget样式自定义,且不影响子控件的样式
2018-09-06 17:50:17QWidget及子类可以使用setStyleSheet()设置样式,一般直接使用setStyleSheet()设置后,QWidget的子控件会继承父控件的样式,如下: widget = QtWidgets.QWidget(centralwidget) widget.setGeometry(QtCore.... -
Qt 2D绘图函数QPainter类基本用法(绘制图片、直线、填充颜色的矩形)(自定义QWidget边框和任意形状)
2019-12-11 09:42:33Qt 2D绘图函数QPainter类基本用法(绘制图片、直线、填充颜色的矩形)(自定义QWidget边框和任意形状) 原创 ... -
Qt自定义QWidget
2021-12-02 16:08:39Qt自定义QWidget实例1 实例1 promotion.pro QT += core gui greaterThan(QT_MAJOR_VERSION, 4): QT += widgets TARGET = promotion TEMPLATE = app DEFINES += QT_DEPRECATED_WARNINGS SOURCES += \ main.cpp \... -
PyQt5中带边框的自定义标题栏
2020-12-21 00:23:26以下是您必须遵循的步骤:有你的主窗口,可以是QMainWindow,或者QWidget,或者任何你想继承的[widget]。在设置旗,self.setWindowFlags(Qt.FramelessWindowHint)在实现你自己的移动。在实现自己的按钮(关闭、最大、... -
Qt实现 获取与设置控件的颜色(背景色,边框色,文本色)
2019-08-08 23:14:29设置控件背景色: //将按钮的背景色设置为红色 ...获取控件的颜色: QPalette pal=ui->lineEdit->palette(); //这里需要注意,输入性质的控件(如这里的lineEdit)用base(),如果是按钮用button(),不然... -
python-QtGui.QTextEdit设置线条颜色基于行包含...
2020-11-23 16:04:02我正在使用QtGui.QTextEdit来显示类似于以下内容的文本,并希望根据某些行是否包含某些文本来更改文本的颜色.以-[开头的行将为蓝色,而包含[ERROR]的行将为红色.我目前有类似以下的内容,from PyQt4 import QtCore, Qt... -
【Qt】QWidget类详解(属性篇)
2021-03-29 16:26:20上图中,构造了一个被挖去中间部分只留下边框的半透明矩形子窗口,然后将其添加到一个父窗口中(该父窗口其实是一个显示pixmap的QLabel), 然后我们设置了不同的属性和性能达到了不同的效果: 左边的widget没有... -
Qt中自定义控件,继承QWidget时应用QSS样式
2017-12-27 11:36:52Qt5.5中,自定义控件继承QWidget,无法直接应用setStyleSheet来设置样式,也无法应用QSS文件。 解决方法: 方法1、调用setAttribute(Qt::WA_StyledBackground,true); 方法2、重写paintEvent,在paintEvent中添加...
收藏数
1,853
精华内容
741