是否可以QQuickwidget::setSource()與變數(QString 或 QByteArray)一起使用?
我知道我可以加載檔案(或資源):ui->quickWidget->setSource(QUrl::fromLocalFile(":/qml/Example.qml"));
但是,如果我將 qml 代碼存盤在變數中,我只能通過首先寫入磁盤上的檔案并加載該檔案來解決它。可以直接做嗎?
uj5u.com熱心網友回復:
也許在臨時檔案的幫助下?
https://doc.qt.io/qt-5/qtemporaryfile.html
像這樣的事情(我沒有太多時間,所以我只是做了一些骯臟的事情):
QQmlApplicationEngine engine;
QString qmlFile =
QString("import QtQuick 2.15\n")
.append("import QtQuick.Window 2.12\n")
.append("import QtQuick.Controls 2.12\n")
.append("Window {\n")
.append("id: root\n")
.append("width: 640\n")
.append("height: 480\n")
.append("visible: true\n")
.append("color: 'green'\n")
.append("}");
QTemporaryFile file;
if(file.open())
{
file.write(qmlFile.toUtf8());
}
file.close();
engine.load(file.fileName());
uj5u.com熱心網友回復:
如果您選擇檔案方法,請考慮使用Qt Resource System。我寫了一個很好的例子。但你不必這樣做。另一種可能的方法是QQmlNetworkAccessManagerFactory,您可以在其中模擬從網路加載 qml,但從字串加載它,但您可以從任何地方加載它,例如從 .zip 檔案。最后,似乎有一種直接的方法,不要忘記你可以從QML 本身做同樣的事情。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/429967.html
標籤:C qt qml qtquick2 qquickwidget
