Я пытаюсь отобразить пользовательский список с помощью QQuickWidget. Поскольку мне нужны два listView: один для результата поиска, другой для очереди, я использовал QTabWidget для переключения между этими двумя QQuickWidget.
Я не закончил создание этого listView (потому что я новичок в этом ) поэтому я импровизировал свой QML, чтобы проверить, работает ли он так, как я напечатал выше. Когда я запускаю свое приложение, QML, который находится внутри QTabWidget, неожиданно отображается.
Он должен отображать желтый прямоугольник и текст, как QQuickWidget ниже, но он отображает текст, выровненный в верхнем левом углу, без желтого прямоугольника.
Когда приложение выполняется
[То, что я пробовал] Я предположил, что это потому, что я помещаю QQuickWidget внутри QWidget на каждой вкладке, поэтому я повысил те QWidget как пользовательская страница, которая имеет QQuickWidget, но ничего не изменилось.
main.py
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5 import uic
from PyQt5.QtQuickWidgets import QQuickWidget
from myresulttab import myResultTab
from myqueuetab import myQueueTab
#loading UI file
form_class = uic.loadUiType("mainWindowUI.ui")[0]
class WindowClass(QMainWindow, form_class) :
def __init__(self) :
super().__init__()
self.setupUi(self)
self.testQuickWidget.setSource(QUrl.fromLocalFile("resultTabQml.qml"))
if __name__ == "__main__" :
app = QApplication(sys.argv)
myWindow = WindowClass()
myWindow.show()
app.exec_()
mainWindowUI.ui
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>555</width>
<height>821</height>
</rect>
</property>
<property name="font">
<font>
<family>NanumGothic</family>
<pointsize>10</pointsize>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
</font>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<property name="styleSheet">
<string notr="true"/>
</property>
<widget class="QWidget" name="centralwidget">
<property name="styleSheet">
<string notr="true"/>
</property>
<layout class="QGridLayout" name="gridLayout" rowstretch="50,5,45,0" columnstretch="70,0">
<property name="verticalSpacing">
<number>15</number>
</property>
<item row="2" column="0" colspan="2">
<widget class="QQuickWidget" name="testQuickWidget">
<property name="resizeMode">
<enum>QQuickWidget::SizeRootObjectToView</enum>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QTabWidget" name="tabWidget">
<property name="currentIndex">
<number>0</number>
</property>
<property name="elideMode">
<enum>Qt::ElideNone</enum>
</property>
<widget class="myResultTab" name="resultTab">
<property name="font">
<font>
<family>NanumGothic</family>
<pointsize>10</pointsize>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
</font>
</property>
<attribute name="title">
<string>검색창</string>
</attribute>
</widget>
<widget class="myQueueTab" name="queueTab">
<property name="autoFillBackground">
<bool>false</bool>
</property>
<attribute name="title">
<string>QUEUE</string>
</attribute>
</widget>
</widget>
</item>
<item row="1" column="0">
<widget class="QLabel" name="console">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<family>NanumGothic</family>
<pointsize>10</pointsize>
<weight>50</weight>
<italic>false</italic>
<bold>false</bold>
</font>
</property>
<property name="toolTip">
<string extracomment="프로그램이 당신에게 보내는 편지입니다. 다정하게 대해주세요 :)"/>
</property>
<property name="text">
<string>resultTabQML.qml should be displayed like this!</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>555</width>
<height>20</height>
</rect>
</property>
<widget class="QMenu" name="menu_F">
<property name="title">
<string>파일(&F)</string>
</property>
</widget>
<widget class="QMenu" name="menu_E">
<property name="title">
<string>편집(&E)</string>
</property>
<addaction name="separator"/>
<addaction name="separator"/>
</widget>
<addaction name="menu_F"/>
<addaction name="menu_E"/>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<customwidgets>
<customwidget>
<class>QQuickWidget</class>
<extends>QWidget</extends>
<header location="global">QtQuickWidgets/QQuickWidget</header>
</customwidget>
<customwidget>
<class>myResultTab</class>
<extends>QWidget</extends>
<header>myresulttab.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>myQueueTab</class>
<extends>QWidget</extends>
<header>myqueuetab.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources/>
<connections/>
<slots>
<slot>inquireDataBtnPressed()</slot>
<slot>insertDataBtnPressed()</slot>
<slot>deleteDataBtnPressed()</slot>
<slot>updateDataBtnPressed()</slot>
<slot>getDataFromApiBtnPressed()</slot>
</slots>
</ui>
myResultTab.py
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtQuickWidgets import QQuickWidget
class myResultTab(QWidget):
def __init__(self):
super().__init__()
layout = QVBoxLayout(self)
resultQuickWidget = QQuickWidget(QUrl.fromLocalFile("resultTabQml.qml"))
layout.addWidget(resultQuickWidget)
self.setLayout(layout)
myQueueTab.py
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtQuickWidgets import QQuickWidget
class myQueueTab(QWidget):
def __init__(self):
super().__init__()
layout = QVBoxLayout(self)
queueQuickWidget = QQuickWidget(QUrl.fromLocalFile("queueTabQml.qml"))
layout.addWidget(queueQuickWidget)
self.setLayout(layout)
resultTabQml.qml
import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 2.2
Item{
Rectangle{
id:rect1
color:"yellow"
anchors.fill: parent
Text {
id: sampleText1
text: qsTr("sampleText1")
font.family: "Arial"
font.pointSize: 50
anchors.rightMargin: 0
anchors.bottomMargin: 0
anchors.fill: parent
verticalAlignment: Text.AlignVCenter
horizontalAlignment: Text.AlignHCenter
}
}
}
/*##^##
Designer {
D{i:0;autoSize:true;height:480;width:640}
}
##^##*/