open()
を実行すると、QtQuick2のPopup
QMLコンポーネントに奇妙な問題があります。透明な背景で表示され、不透明にする必要があります。ポップアップアイテムが不明になる
これは私がmain.qml
ファイルからPopup
コンポーネントを呼び出す方法です:これは、コンポーネントのソースである
NewUser {
id: new_user_form
}
:
// File: NewUser.qml
Popup {
id: new_user_popup
modal: true
focus: true
x: 10
y: 10
width: 300
height: 200
Rectangle {
anchors.fill: parent
color: "transparent"
border.color: "red"
}
}
そして、これが出力されます:
今、私はmain.qml
、すべてにNewUser.qml
のソースを移動することで、このエラーは今も元気になります。
Popup {
id: new_user_form
modal: true
focus: true
x: 10
y: 10
width: 300
height: 200
}
を参照してください、ポップアップが完全にOPAQUEです:
これは今main.qml
「固定」であります
なぜ、コンポーネントのソースコードをmain.qml
から別のファイルに移動するとopaquness?私のmain.qmlには他にもたくさんのものがありますが、ポップアップに関連していないと思います。また、IDは一意です。私はこれがQT 5.8 RC(私が開発に使用している)の問題ではないことを願っています。それはまだ公式ではありませんが、間もなくそうなります。
EDIT:
私はバグを発見したと信じています。
メインファイル:バグは、再現以下のファイルを使用してプロジェクトを作成するにはQt 5.8とQt 5.7
と再現性のある
//main.qml
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.0
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
NewUser {
id: new_user_form
}
Button {
text: "open popup"
onClicked: {
new_user_form.open()
}
}
}
コンポーネントファイルを(NewUser.qml)
//File: NewUser.qml
import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Controls.Material 2.0
import QtQuick.Dialogs 1.2
import QtQuick.Layouts 1.3
import Qt.labs.settings 1.0
import QtQuick.Templates 2.0
Popup {
id: new_user_popup
modal: true
focus: true
x: 10; y:10;
height: 200; width: 300;
Button {
text: "Test button"
}
}
//File: qtquickcontrols2.conf
; This file can be edited to change the style of the application
; See Styling Qt Quick Controls 2 in the documentation for details:
; http://doc.qt.io/qt-5/qtquickcontrols2-styles.html
[Controls]
Style=Material
[Universal]
Theme=Light
;Accent=Steel
[Material]
Theme=Light
;Accent=BlueGrey
;Primary=BlueGray
//File: main.cpp
#include <QGuiApplication>
#include <QQmlApplicationEngine>
int main(int argc, char *argv[])
{
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QGuiApplication app(argc, argv);
QQmlApplicationEngine engine;
engine.load(QUrl(QLatin1String("qrc:/main.qml")));
return app.exec();
}
これはバグですか? 「開くポップアップ」ボタンをクリックすると、淡色の画面が表示されますが、ポップアップは表示されません。
私はmainの例も作った。最小限のApplicationWindowコンポーネントのみを含み、Popupコンポーネント(別の.qmlファイルに格納される)を開くコードと背景(Popup)を含むqmlは、実際は不透明である必要があります。だから、すべてを混乱させる_my_ main.qmlですが、私はそこに何のエラーもありません。そして、他のものは完全に無関係なので、私はなぜこれが起こっているのかについての手がかりはありません。 – Nulik
私が見つけたもう一つの問題は、_bad_(透明)ポップアップコンポーネントに 'Button {}'を追加すると表示されないということです。しかし、main.qmlにコードをコピーすると、ボタンは完全にうまく表示されます。 – Nulik
あなたが言ったように、問題はあなたの 'main.qml'にあるはずです。私は例を書いてもうまくいきます。ポップアップで 'opacity:1.0'を試しましたか? – Tarod