Qt 투명 테두리 없 는 창의 구현 예시
![demo](https://s1.md5.ltd/image/81b7afc40e9b61a743c21b9e0bdf219a.gif)
0x 00 어떻게 창 을 투명 하 게 합 니까?
첫 번 째 단계:창의 투명 층 을 엽 니 다.
setWindowFlags(Qt::FramelessWindowHint); /* : , Windows , 。 */
setAttribute(Qt::WA_TranslucentBackground);
두 번 째 단계:paintEvent 이 벤트 를 다시 쓰 고 QPainter 를 사용 하여 투명 층 을 그립 니 다.
void paintEvent(QPaintEvent *)
{
QPainter painter(this);
/* 0x20 , 0x0 0xff */
painter.fillRect(this->rect(), QColor(0, 0, 0, 0x20));
}
0x 01 어떻게 테두리 창 이 없 습 니까?설정
setWindowFlags(Qt::FramelessWindowHint);
하면 테두리 창 이 없 지만 크기 를 이동 하고 변경 할 수 없습니다.0x 02 어떻게 창 을 끌 어 당 깁 니까?
시스템 창 이
Qt::FramelessWindowHint
으로 설정 되 어 있어 창 이 끌 리 지 않 습 니 다.마우스 이동 이 벤트 를 캡 처 하여 창 이동 을 실현 합 니 다.
void mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton) {
/* */
m_startPoint = frameGeometry().topLeft() - event->globalPos();
}
}
void mouseMoveEvent(QMouseEvent *event)
{
/* */
this->move(event->globalPos() + m_startPoint);
}
0x 03 전체 코드
#include <QWidget>
#include <QVBoxLayout>
#include <QPushButton>
#include <QPainter>
#include <QMouseEvent>
class TransparentWidget : public QWidget
{
Q_OBJECT
public:
TransparentWidget(QWidget *parent = 0)
: QWidget(parent)
{
setWindowTitle(QString::fromLocal8Bit(" "));
setFixedSize(480, 320);
setWindowFlags(Qt::FramelessWindowHint);
setAttribute(Qt::WA_TranslucentBackground);
QPushButton *button = new QPushButton("Hello world!", this);
button->setGeometry(5, 5, 80, 40);
}
void paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.fillRect(this->rect(), QColor(0, 0, 0, 0x20)); /* */
}
void mousePressEvent(QMouseEvent *event)
{
if (event->button() == Qt::LeftButton) {
m_startPoint = frameGeometry().topLeft() - event->globalPos();
}
}
void mouseMoveEvent(QMouseEvent *event)
{
this->move(event->globalPos() + m_startPoint);
}
private:
QPoint m_startPoint;
};
0x 04 소스 주소https://github.com/aeagean/QtCustomWidget
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
반투명 창 지원,Mozilla 다시 업데이트텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.