任务:
因为无法在父窗口小部件中更改边框样式,所以我制作了两个边框样式。第一个父窗口小部件是透明的,它是在QSS中设置的。第二个是带有圆角的那个,也是用QSS设置的。附:我想这不是最明智的想法。差远了。 为了使它工作,我设置了Qt :: WA_TranslucentBackground属性。
设置Qt :: FramelessWindowHint窗口标志。
问题是:
当WA_TranslucentBackground和FramelessWindowHint打开时 - 没有QML
当FramelessWindowHint打开时 - 仅QML视图
当WA_TranslucentBackground或两者都关闭时 - 仍然是系统BORDERS
我也尝试在MainWindow上设置掩码
QPixmap pixmap = QWidget::grab(this->rect());
this->setMask(pixmap.createMaskFromColor(Qt::transparent, Qt::MaskInColor));
效果很好,没有系统边框,自定义的四边形和QML工作,但整个其他区域变白,不知道如何修复。
主窗口:
QFile styleFile("style.qss");
styleFile.open(QFile::ReadOnly), qApp->setStyleSheet(QLatin1String(styleFile.readAll()));
QWidget *container = QWidget::createWindowContainer(new QQuickView(QUrl("main.qml")), this);
ui->verticalLayout->addWidget(container);
//this->setAttribute(Qt::WA_TranslucentBackground, true);
//this->setWindowFlags(Qt::FramelessWindowHint | Qt::Window);
QPixmap pixmap = QWidget::grab(this->rect());
this->setMask(pixmap.createMaskFromColor(Qt::transparent, Qt::MaskInColor));
样式:
QWidget#MainWindow{
background:transparent;
}
QWidget#MainWindowRounded{
background-color: grey;
border: 1px solid black;
border-radius: 5px;
}
这可以解决吗?