更新代码
parent
8a871431e7
commit
d2a8f2617a
|
@ -30,7 +30,7 @@ FramelessDialog::FramelessDialog(QWidget *parent) : QDialog(parent)
|
||||||
flags = this->windowFlags();
|
flags = this->windowFlags();
|
||||||
titleBar = 0;
|
titleBar = 0;
|
||||||
|
|
||||||
//设置背景透明 官方在5.3以后才彻底修复 WA_TranslucentBackground+FramelessWindowHint 并存不绘制的BUG
|
//设置背景透明 官方在5.3以后才彻底修复 WA_TranslucentBackground+FramelessWindowHint 并存不绘制的bug
|
||||||
#if (QT_VERSION >= QT_VERSION_CHECK(5,3,0))
|
#if (QT_VERSION >= QT_VERSION_CHECK(5,3,0))
|
||||||
this->setAttribute(Qt::WA_TranslucentBackground);
|
this->setAttribute(Qt::WA_TranslucentBackground);
|
||||||
#endif
|
#endif
|
||||||
|
@ -50,7 +50,7 @@ FramelessDialog::FramelessDialog(QWidget *parent) : QDialog(parent)
|
||||||
|
|
||||||
void FramelessDialog::showEvent(QShowEvent *event)
|
void FramelessDialog::showEvent(QShowEvent *event)
|
||||||
{
|
{
|
||||||
//解决有时候窗体重新显示的时候假死不刷新的BUG
|
//解决有时候窗体重新显示的时候假死不刷新的bug
|
||||||
setAttribute(Qt::WA_Mapped);
|
setAttribute(Qt::WA_Mapped);
|
||||||
QDialog::showEvent(event);
|
QDialog::showEvent(event);
|
||||||
}
|
}
|
||||||
|
@ -69,7 +69,7 @@ void FramelessDialog::doWindowStateChange(QEvent *event)
|
||||||
//发出最大化最小化等改变事件,以便界面上更改对应的信息比如右上角图标和文字
|
//发出最大化最小化等改变事件,以便界面上更改对应的信息比如右上角图标和文字
|
||||||
emit windowStateChange(!moveEnable);
|
emit windowStateChange(!moveEnable);
|
||||||
|
|
||||||
//解决mac系统上无边框最小化失效的BUG
|
//解决mac系统上无边框最小化失效的bug
|
||||||
#ifdef Q_OS_MACOS
|
#ifdef Q_OS_MACOS
|
||||||
if (windowState() & Qt::WindowMinimized) {
|
if (windowState() & Qt::WindowMinimized) {
|
||||||
isMin = true;
|
isMin = true;
|
||||||
|
|
|
@ -11,9 +11,9 @@
|
||||||
* 6. 自动识别双击标题栏响应。
|
* 6. 自动识别双击标题栏响应。
|
||||||
* 7. 无边框拉伸在windows下不抖动。
|
* 7. 无边框拉伸在windows下不抖动。
|
||||||
* 8. 在windows下具有移动到边缘半屏、移动到顶部全屏特性。
|
* 8. 在windows下具有移动到边缘半屏、移动到顶部全屏特性。
|
||||||
* 9. 解决mac系统上无边框最小化最大化失效的BUG。
|
* 9. 解决mac系统上无边框最小化最大化失效的bug。
|
||||||
* 10. 解决系统休眠后再次启动程序懵逼的BUG。
|
* 10. 解决系统休眠后再次启动程序懵逼的bug。
|
||||||
* 11. 解决有时候窗体重新显示的时候假死不刷新的BUG。
|
* 11. 解决有时候窗体重新显示的时候假死不刷新的bug。
|
||||||
* 12. 轻量级,1个代码文件,核心代码行数不到300行。
|
* 12. 轻量级,1个代码文件,核心代码行数不到300行。
|
||||||
* 13. 注释详细,示例完美,非常适合阅读和学习。
|
* 13. 注释详细,示例完美,非常适合阅读和学习。
|
||||||
* 14. 开源开箱即用,保证任意Qt版本可正常编译运行,无需任何调整。
|
* 14. 开源开箱即用,保证任意Qt版本可正常编译运行,无需任何调整。
|
||||||
|
@ -41,7 +41,7 @@ protected:
|
||||||
void doResizeEvent(QEvent *event);
|
void doResizeEvent(QEvent *event);
|
||||||
bool eventFilter(QObject *watched, QEvent *event);
|
bool eventFilter(QObject *watched, QEvent *event);
|
||||||
|
|
||||||
//拦截系统事件用于修复系统休眠后唤醒程序的BUG
|
//拦截系统事件用于修复系统休眠后唤醒程序的bug
|
||||||
#if (QT_VERSION >= QT_VERSION_CHECK(6,0,0))
|
#if (QT_VERSION >= QT_VERSION_CHECK(6,0,0))
|
||||||
bool nativeEvent(const QByteArray &eventType, void *message, qintptr *result);
|
bool nativeEvent(const QByteArray &eventType, void *message, qintptr *result);
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -30,7 +30,7 @@ FramelessMainWindow::FramelessMainWindow(QWidget *parent) : QMainWindow(parent)
|
||||||
flags = this->windowFlags();
|
flags = this->windowFlags();
|
||||||
titleBar = 0;
|
titleBar = 0;
|
||||||
|
|
||||||
//设置背景透明 官方在5.3以后才彻底修复 WA_TranslucentBackground+FramelessWindowHint 并存不绘制的BUG
|
//设置背景透明 官方在5.3以后才彻底修复 WA_TranslucentBackground+FramelessWindowHint 并存不绘制的bug
|
||||||
#if (QT_VERSION >= QT_VERSION_CHECK(5,3,0))
|
#if (QT_VERSION >= QT_VERSION_CHECK(5,3,0))
|
||||||
this->setAttribute(Qt::WA_TranslucentBackground);
|
this->setAttribute(Qt::WA_TranslucentBackground);
|
||||||
#endif
|
#endif
|
||||||
|
@ -50,7 +50,7 @@ FramelessMainWindow::FramelessMainWindow(QWidget *parent) : QMainWindow(parent)
|
||||||
|
|
||||||
void FramelessMainWindow::showEvent(QShowEvent *event)
|
void FramelessMainWindow::showEvent(QShowEvent *event)
|
||||||
{
|
{
|
||||||
//解决有时候窗体重新显示的时候假死不刷新的BUG
|
//解决有时候窗体重新显示的时候假死不刷新的bug
|
||||||
setAttribute(Qt::WA_Mapped);
|
setAttribute(Qt::WA_Mapped);
|
||||||
QMainWindow::showEvent(event);
|
QMainWindow::showEvent(event);
|
||||||
}
|
}
|
||||||
|
@ -69,7 +69,7 @@ void FramelessMainWindow::doWindowStateChange(QEvent *event)
|
||||||
//发出最大化最小化等改变事件,以便界面上更改对应的信息比如右上角图标和文字
|
//发出最大化最小化等改变事件,以便界面上更改对应的信息比如右上角图标和文字
|
||||||
emit windowStateChange(!moveEnable);
|
emit windowStateChange(!moveEnable);
|
||||||
|
|
||||||
//解决mac系统上无边框最小化失效的BUG
|
//解决mac系统上无边框最小化失效的bug
|
||||||
#ifdef Q_OS_MACOS
|
#ifdef Q_OS_MACOS
|
||||||
if (windowState() & Qt::WindowMinimized) {
|
if (windowState() & Qt::WindowMinimized) {
|
||||||
isMin = true;
|
isMin = true;
|
||||||
|
|
|
@ -11,9 +11,9 @@
|
||||||
* 6. 自动识别双击标题栏响应。
|
* 6. 自动识别双击标题栏响应。
|
||||||
* 7. 无边框拉伸在windows下不抖动。
|
* 7. 无边框拉伸在windows下不抖动。
|
||||||
* 8. 在windows下具有移动到边缘半屏、移动到顶部全屏特性。
|
* 8. 在windows下具有移动到边缘半屏、移动到顶部全屏特性。
|
||||||
* 9. 解决mac系统上无边框最小化最大化失效的BUG。
|
* 9. 解决mac系统上无边框最小化最大化失效的bug。
|
||||||
* 10. 解决系统休眠后再次启动程序懵逼的BUG。
|
* 10. 解决系统休眠后再次启动程序懵逼的bug。
|
||||||
* 11. 解决有时候窗体重新显示的时候假死不刷新的BUG。
|
* 11. 解决有时候窗体重新显示的时候假死不刷新的bug。
|
||||||
* 12. 轻量级,1个代码文件,核心代码行数不到300行。
|
* 12. 轻量级,1个代码文件,核心代码行数不到300行。
|
||||||
* 13. 注释详细,示例完美,非常适合阅读和学习。
|
* 13. 注释详细,示例完美,非常适合阅读和学习。
|
||||||
* 14. 开源开箱即用,保证任意Qt版本可正常编译运行,无需任何调整。
|
* 14. 开源开箱即用,保证任意Qt版本可正常编译运行,无需任何调整。
|
||||||
|
@ -41,7 +41,7 @@ protected:
|
||||||
void doResizeEvent(QEvent *event);
|
void doResizeEvent(QEvent *event);
|
||||||
bool eventFilter(QObject *watched, QEvent *event);
|
bool eventFilter(QObject *watched, QEvent *event);
|
||||||
|
|
||||||
//拦截系统事件用于修复系统休眠后唤醒程序的BUG
|
//拦截系统事件用于修复系统休眠后唤醒程序的bug
|
||||||
#if (QT_VERSION >= QT_VERSION_CHECK(6,0,0))
|
#if (QT_VERSION >= QT_VERSION_CHECK(6,0,0))
|
||||||
bool nativeEvent(const QByteArray &eventType, void *message, qintptr *result);
|
bool nativeEvent(const QByteArray &eventType, void *message, qintptr *result);
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -30,7 +30,7 @@ FramelessWidget::FramelessWidget(QWidget *parent) : QWidget(parent)
|
||||||
flags = this->windowFlags();
|
flags = this->windowFlags();
|
||||||
titleBar = 0;
|
titleBar = 0;
|
||||||
|
|
||||||
//设置背景透明 官方在5.3以后才彻底修复 WA_TranslucentBackground+FramelessWindowHint 并存不绘制的BUG
|
//设置背景透明 官方在5.3以后才彻底修复 WA_TranslucentBackground+FramelessWindowHint 并存不绘制的bug
|
||||||
#if (QT_VERSION >= QT_VERSION_CHECK(5,3,0))
|
#if (QT_VERSION >= QT_VERSION_CHECK(5,3,0))
|
||||||
this->setAttribute(Qt::WA_TranslucentBackground);
|
this->setAttribute(Qt::WA_TranslucentBackground);
|
||||||
#endif
|
#endif
|
||||||
|
@ -50,7 +50,7 @@ FramelessWidget::FramelessWidget(QWidget *parent) : QWidget(parent)
|
||||||
|
|
||||||
void FramelessWidget::showEvent(QShowEvent *event)
|
void FramelessWidget::showEvent(QShowEvent *event)
|
||||||
{
|
{
|
||||||
//解决有时候窗体重新显示的时候假死不刷新的BUG
|
//解决有时候窗体重新显示的时候假死不刷新的bug
|
||||||
setAttribute(Qt::WA_Mapped);
|
setAttribute(Qt::WA_Mapped);
|
||||||
QWidget::showEvent(event);
|
QWidget::showEvent(event);
|
||||||
}
|
}
|
||||||
|
@ -69,7 +69,7 @@ void FramelessWidget::doWindowStateChange(QEvent *event)
|
||||||
//发出最大化最小化等改变事件,以便界面上更改对应的信息比如右上角图标和文字
|
//发出最大化最小化等改变事件,以便界面上更改对应的信息比如右上角图标和文字
|
||||||
emit windowStateChange(!moveEnable);
|
emit windowStateChange(!moveEnable);
|
||||||
|
|
||||||
//解决mac系统上无边框最小化失效的BUG
|
//解决mac系统上无边框最小化失效的bug
|
||||||
#ifdef Q_OS_MACOS
|
#ifdef Q_OS_MACOS
|
||||||
if (windowState() & Qt::WindowMinimized) {
|
if (windowState() & Qt::WindowMinimized) {
|
||||||
isMin = true;
|
isMin = true;
|
||||||
|
|
|
@ -11,9 +11,9 @@
|
||||||
* 6. 自动识别双击标题栏响应。
|
* 6. 自动识别双击标题栏响应。
|
||||||
* 7. 无边框拉伸在windows下不抖动。
|
* 7. 无边框拉伸在windows下不抖动。
|
||||||
* 8. 在windows下具有移动到边缘半屏、移动到顶部全屏特性。
|
* 8. 在windows下具有移动到边缘半屏、移动到顶部全屏特性。
|
||||||
* 9. 解决mac系统上无边框最小化最大化失效的BUG。
|
* 9. 解决mac系统上无边框最小化最大化失效的bug。
|
||||||
* 10. 解决系统休眠后再次启动程序懵逼的BUG。
|
* 10. 解决系统休眠后再次启动程序懵逼的bug。
|
||||||
* 11. 解决有时候窗体重新显示的时候假死不刷新的BUG。
|
* 11. 解决有时候窗体重新显示的时候假死不刷新的bug。
|
||||||
* 12. 轻量级,1个代码文件,核心代码行数不到300行。
|
* 12. 轻量级,1个代码文件,核心代码行数不到300行。
|
||||||
* 13. 注释详细,示例完美,非常适合阅读和学习。
|
* 13. 注释详细,示例完美,非常适合阅读和学习。
|
||||||
* 14. 开源开箱即用,保证任意Qt版本可正常编译运行,无需任何调整。
|
* 14. 开源开箱即用,保证任意Qt版本可正常编译运行,无需任何调整。
|
||||||
|
@ -41,7 +41,7 @@ protected:
|
||||||
void doResizeEvent(QEvent *event);
|
void doResizeEvent(QEvent *event);
|
||||||
bool eventFilter(QObject *watched, QEvent *event);
|
bool eventFilter(QObject *watched, QEvent *event);
|
||||||
|
|
||||||
//拦截系统事件用于修复系统休眠后唤醒程序的BUG
|
//拦截系统事件用于修复系统休眠后唤醒程序的bug
|
||||||
#if (QT_VERSION >= QT_VERSION_CHECK(6,0,0))
|
#if (QT_VERSION >= QT_VERSION_CHECK(6,0,0))
|
||||||
bool nativeEvent(const QByteArray &eventType, void *message, qintptr *result);
|
bool nativeEvent(const QByteArray &eventType, void *message, qintptr *result);
|
||||||
#else
|
#else
|
||||||
|
|
|
@ -28,7 +28,7 @@ bool FramelessWidget2::eventFilter(QObject *watched, QEvent *event)
|
||||||
{
|
{
|
||||||
if (widget != 0 && watched == widget) {
|
if (widget != 0 && watched == widget) {
|
||||||
if (event->type() == QEvent::WindowStateChange) {
|
if (event->type() == QEvent::WindowStateChange) {
|
||||||
//解决mac系统上无边框最小化失效的BUG
|
//解决mac系统上无边框最小化失效的bug
|
||||||
#ifdef Q_OS_MACOS
|
#ifdef Q_OS_MACOS
|
||||||
if (widget->windowState() & Qt::WindowMinimized) {
|
if (widget->windowState() & Qt::WindowMinimized) {
|
||||||
isMin = true;
|
isMin = true;
|
||||||
|
|
|
@ -56,7 +56,7 @@ public Q_SLOTS:
|
||||||
//设置是否可拖动+拉伸
|
//设置是否可拖动+拉伸
|
||||||
void setMoveEnable(bool moveEnable);
|
void setMoveEnable(bool moveEnable);
|
||||||
void setResizeEnable(bool resizeEnable);
|
void setResizeEnable(bool resizeEnable);
|
||||||
//修复部分控件不能自动识别 MouseButtonRelease 的BUG
|
//修复部分控件不能自动识别 MouseButtonRelease 的bug
|
||||||
void setMousePressed(bool mousePressed);
|
void setMousePressed(bool mousePressed);
|
||||||
|
|
||||||
//设置要无边框的窗体
|
//设置要无边框的窗体
|
||||||
|
|
Loading…
Reference in New Issue