Qt QQuickWidget使无框架透明的QMainWindow完全消失
我想在窗口中嵌入一个quickwidget。但是如果我添加一个quickwidget作为它的子窗口,窗口将变得完全不可见。我正在使用Qt5.4.0/5.4.2+Windows10。以下是片段:Qt QQuickWidget使无框架透明的QMainWindow完全消失,qt,qml,Qt,Qml,我想在窗口中嵌入一个quickwidget。但是如果我添加一个quickwidget作为它的子窗口,窗口将变得完全不可见。我正在使用Qt5.4.0/5.4.2+Windows10。以下是片段: #include <QApplication> #include <QMainWindow> #include <QQuickWidget> #include <QPushButton> int main(int argc, char *argv[]) {
#include <QApplication>
#include <QMainWindow>
#include <QQuickWidget>
#include <QPushButton>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
auto window = new QMainWindow;
auto btn= new QPushButton("Can you see me?",window);
window->setWindowFlags(Qt::FramelessWindowHint|Qt::WindowStaysOnTopHint);
window->setAttribute(Qt::WA_TranslucentBackground, true);
//comment folloing code and everything will work fine.
auto quick = new QQuickWidget(window);
quick->setSource(QUrl("qrc:/main.qml"));
quick->move(40,40);
window->show();
return a.exec();
}
但是,有一个严重的问题。我不能点击它的背景,尽管那是透明的。我已经测试过,QWidget
的透明背景可以点击
Edit2:重新启动计算机后,quickwidget再次不可见。WTF
Edit3:Qt5.5.0似乎还可以。main.qml是什么样子的?它只是一个指定了固定宽度、高度和颜色的矩形。@MitchLooks就像Qt中的另一个bug,与无框窗口相关。您可以尝试理解并调试以下源代码。这是一个很好的起点:
src/plugins/platforms/windows/qwindowswindow.cpp
,方法qwindowswindow::handleWindowStateChange
QQuickWidget可能有问题。我更新了我的问题。你知道吗@萨兹
auto quick = new QQuickWidget();
quick->setWindowFlags(Qt::FramelessWindowHint|Qt::WindowStaysOnTopHint);
quick->setAttribute(Qt::WA_TranslucentBackground, true);
quick->setClearColor(Qt::transparent);