aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside6/doc/faq/typesoffiles.rst
diff options
context:
space:
mode:
Diffstat (limited to 'sources/pyside6/doc/faq/typesoffiles.rst')
-rw-r--r--sources/pyside6/doc/faq/typesoffiles.rst152
1 files changed, 152 insertions, 0 deletions
diff --git a/sources/pyside6/doc/faq/typesoffiles.rst b/sources/pyside6/doc/faq/typesoffiles.rst
new file mode 100644
index 000000000..3155b24fc
--- /dev/null
+++ b/sources/pyside6/doc/faq/typesoffiles.rst
@@ -0,0 +1,152 @@
+.. _typesoffiles:
+
+File Types
+==========
+
+There are many different file types that you will encounter while
+developing |project| applications, ui, qrc, qml, pyproject, etc.
+Here you can find a simple explanation for
+each of them.
+
+Python Files ``.py``
+--------------------
+
+Python files are the main format you will be dealing with, while developing
+|project| projects.
+
+It is important to note that you can write applications **only** with Python
+files, without the need of ``.ui``, ``.qrc``, or ``.qml`` files, however
+using other formats will facilitate some processes, and enable new
+functionality to your applications.
+
+.. code-block:: python
+
+ class MyWidget(QWidget):
+ def __init__(self):
+ QWidget.__init__(self)
+
+ self.hello = ["Hallo Welt", "你好,世界", "Hei maailma",
+ "Hola Mundo", "Привет мир"]
+
+ self.button = QPushButton("Click me!")
+ self.text = QLabel("Hello World")
+ self.text.setAlignment(Qt.AlignCenter)
+ # ...
+
+User Interface Definition File ``.ui``
+--------------------------------------
+
+When using *Qt Widgets Designer*, you can create user interfaces using
+Qt Widgets with the WYSIWYG form editor, this interface is represented
+as a widget tree using XML. Here is an extract of the beginning of a
+``.ui`` file:
+
+.. code-block:: xml
+
+ <?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>400</width>
+ <height>300</height>
+ </rect>
+ </property>
+ <property name="windowTitle">
+ <string>MainWindow</string>
+ </property>
+ <widget class="QWidget" name="centralWidget">
+
+The `pyside6-uic` tool generates Python code from these `.ui` files,
+which you can import from your main files, so it is not necessary
+for you to include the `.ui` files in your deployed application.
+
+For more details, see :ref:`using_ui_files`.
+
+Resource Collection Files ``.qrc``
+----------------------------------
+
+List of binary files that will be used alongside your application.
+As an XML-based file, its structure look like this:
+
+.. code-block:: xml
+
+ <!DOCTYPE RCC><RCC version="1.0">
+ <qresource>
+ <file>images/quit.png</file>
+ <file>font/myfont.ttf</file>
+ </qresource>
+ </RCC>
+
+
+The `pyside6-rcc` tool generates Python code from these `.qrc` files,
+so you are not required to include the listed files in your deployed
+application.
+
+For more details, see :ref:`using_qrc_files`.
+
+Qt Modeling Language File ``.qml``
+----------------------------------
+
+Graphical QML applications are not related to Qt Widgets applications, and
+that is why the usual setup of QML project is a Python file that loads
+the QML file, and optionally, elements defined in Python that are exposed
+to QML to be used.
+
+You can write ``.qml`` files by hand, but also you can use tools like the
+*QML Designer* that is embedded in *Qt Creator*. Additionally, there are commercial
+tools like *Qt Design Studio* that allow you to load designs from other design
+applications.
+
+Here you can find an example of how a ``.qml`` file looks like.
+The code will display a lightgray rectangle, with the "Hello World!"
+message on it.
+
+.. code-block:: javascript
+
+ import QtQuick 2.0
+
+ Rectangle {
+ id: page
+ width: 320;
+ height: 480
+ color: "lightgray"
+
+ Text {
+ id: helloText
+ text: "Hello world!"
+ y: 30
+ anchors.horizontalCenter: page.horizontalCenter
+ font.pointSize: 24;
+ font.bold: true
+ }
+ }
+
+Qt Creator Python Project File ``.pyproject``
+---------------------------------------------
+
+For *Qt Creator* to load and handle Python based projects, a special file is
+needed, because C++ based projects could be handle from ``.qmake`` or
+``CMakeLists.txt`` file, which are not used with Python-based projects.
+
+Old versions of *Qt Creator*, provided a simple format with the ``.pyqtc``
+extension, which were plain-text files with one-file-per-line::
+
+ library/server.py
+ library/client.py
+ logger.py
+ ...
+
+There were limitations to this format, and further options that might be
+added that would not be supported, which was the motivation to create a
+``.pyproject`` file, which is a JSON-based file where more options could
+be added. Here is an example of such file:
+
+.. code-block:: javascript
+
+ {
+ "files": ["library/server.py", "library/client.py", "logger.py", ...]
+ }