如何解决Qt:Qt 6.1.1 未能创建顶点着色器:错误 0x80070057
伙计们! 我是 qt 的新用户,我遇到了 qml 的问题。这个问题已经在 this article 中讨论过,但是对于 python。我用 C++/Qt 6.1.1、QtCreator 4.15.1 编写开源软件。请帮帮我。
这里是问题的关键:qml 不起作用,应用程序输出写入以下消息:“未能创建顶点着色器:错误 0x80070057: ???????? ??????? ? ??????. 建立图形管道状态失败 ".
Qt 文档说这是因为“场景图改编”。这是链接:https://doc-snapshots.qt.io/qt6-dev/qtquick-visualcanvas-adaptations.html。
我尝试使用 main 中文章中的此方法: QQuickWindow :: setSceneGraphBackend ("QT_QUICK_BACKEND"); 为此,您还需要包含库 QQuickWindow。
但是,Qt 给出了以下错误:无法为后端“QT_QUICK_BACKEND”创建场景图上下文 - 检查插件是否在 C 中正确安装:/Qt/6.1.1/mingw81_64/plugins 到这里我已经不明白该怎么办了...
为了清楚起见,我提供了代码。因为在 qml 中创建一个窗口并在其中包含 Rectangle {} 就足够了。
我从示例中获取了代码(尝试了 3 个 QtQuick 示例)。 主要功能代码如下:
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QQuickWindow>
int main(int argc,char *argv[])
{
QQuickWindow::setSceneGraphBackend("QT_QUICK_BACKEND");
QGuiApplication app(argc,argv);
QQmlApplicationEngine engine;
engine.load(QUrl("qrc:/sidepanel.qml"));
if (engine.rootObjects().isEmpty())
return -1;
return app.exec();
}
QML 代码:
import QtQuick
import QtQuick.Controls
ApplicationWindow {
id: window
width: 360
height: 520
visible: true
title: qsTr("Side Panel")
//! [orientation]
readonly property bool inPortrait: window.width < window.height
//! [orientation]
ToolBar {
id: overlayHeader
z: 1
width: parent.width
parent: Overlay.overlay
Label {
id: label
anchors.centerIn: parent
text: "Qt Quick Controls"
}
}
Drawer {
id: drawer
y: overlayHeader.height
width: window.width / 2
height: window.height - overlayHeader.height
modal: inPortrait
interactive: inPortrait
position: inPortrait ? 0 : 1
visible: !inPortrait
ListView {
id: listView
anchors.fill: parent
headerPositioning: ListView.OverlayHeader
header: Pane {
id: header
z: 2
width: parent.width
contentHeight: logo.height
Image {
id: logo
width: parent.width
source: "images/qt-logo.png"
fillMode: implicitWidth > width ? Image.PreserveAspectFit : Image.Pad
}
MenuSeparator {
parent: header
width: parent.width
anchors.verticalCenter: parent.bottom
visible: !listView.atYBeginning
}
}
footer: ItemDelegate {
id: footer
text: qsTr("Footer")
width: parent.width
MenuSeparator {
parent: footer
width: parent.width
anchors.verticalCenter: parent.top
}
}
model: 10
delegate: ItemDelegate {
text: qsTr("Title %1").arg(index + 1)
width: listView.width
}
ScrollIndicator.vertical: ScrollIndicator { }
}
}
Flickable {
id: flickable
anchors.fill: parent
anchors.topMargin: overlayHeader.height
anchors.leftMargin: !inPortrait ? drawer.width : undefined
topMargin: 20
bottomMargin: 20
contentHeight: column.height
Column {
id: column
spacing: 20
anchors.margins: 20
anchors.left: parent.left
anchors.right: parent.right
Label {
font.pixelSize: 22
width: parent.width
elide: Label.ElideRight
horizontalAlignment: Qt.AlignHCenter
text: qsTr("Side Panel Example")
}
Label {
width: parent.width
wrapMode: Label.WordWrap
text: qsTr("This example demonstrates how Drawer can be used as a non-closable persistent side panel.\n\n" +
"When the application is in portrait mode,the drawer is an interactive side panel that can " +
"be swiped open from the left edge. When the application is in landscape mode,the drawer " +
"and the content are laid out side by side.\n\nThe application is currently in %1 mode.").arg(inPortrait ? qsTr("portrait") : qsTr("landscape"))
}
}
ScrollIndicator.vertical: ScrollIndicator { }
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。