PySide6 和 PySide2 的 QVirtualKeyboard 默认样式不一样
QVirtualKeyboard default style for PySide6 and PySide2 not the same
我在pyside2上写的项目中使用键盘,没有任何额外的设置它看起来像这样:
但 pyside6 上的相同代码以另一种样式显示键盘:
如何在 pyside6 中使用 pyside2 中的样式?
一种可能的解决方案是从 Qt5 下载 qtvirtualkeyboard 样式并在 Qt6 中使用它:
将默认样式从qtvirtualkeyboard的Qt5分支复制到.py文件旁边的qml/QtQuick/VirtualKeyboard/Styles/
文件夹中。
mkdir -p qml/QtQuick/VirtualKeyboard/Styles/
git clone -b 5.15.2 https://code.qt.io/qt/qtvirtualkeyboard.git
cp -rf qtvirtualkeyboard/src/virtualkeyboard/content/styles/default qml/QtQuick/VirtualKeyboard/Styles/qt5default
结构应该如下:
├── main.py
└── qml
└── QtQuick
└── VirtualKeyboard
└── Styles
└── qt5default
├── images
│ ├── backspace-868482.svg
│ ├── check-868482.svg
│ ├── enter-868482.svg
│ ├── globe-868482.svg
│ ├── handwriting-868482.svg
│ ├── hidekeyboard-868482.svg
│ ├── search-868482.svg
│ ├── selectionhandle-bottom.svg
│ ├── shift-80c342.svg
│ ├── shift-868482.svg
│ ├── shift-c5d6b6.svg
│ └── textmode-868482.svg
├── style.qml
└── virtualkeyboard_default_style.qrc
换行:
readonly property string resourcePrefix: "qrc:/QtQuick/VirtualKeyboard/content/styles/default/"
至:
readonly property string resourcePrefix: ""
在 .py 中,您必须将 qml 包含到 QML_IMPORT_PATH 并使用新样式设置 QT_VIRTUALKEYBOARD_STYLE:
import os
from pathlib import Path
import sys
from PySide6.QtWidgets import QApplication, QLineEdit
CURRENT_DIRECTORY = Path(__file__).resolve().parent
def main():
os.environ["QML_IMPORT_PATH"] = os.fspath(CURRENT_DIRECTORY / "qml")
os.environ["QT_IM_MODULE"] = "qtvirtualkeyboard"
os.environ["QT_VIRTUALKEYBOARD_STYLE"] = "qt5default"
app = QApplication(sys.argv)
w = QLineEdit()
w.show()
sys.exit(app.exec())
if __name__ == "__main__":
main()
我在pyside2上写的项目中使用键盘,没有任何额外的设置它看起来像这样:
但 pyside6 上的相同代码以另一种样式显示键盘:
如何在 pyside6 中使用 pyside2 中的样式?
一种可能的解决方案是从 Qt5 下载 qtvirtualkeyboard 样式并在 Qt6 中使用它:
将默认样式从qtvirtualkeyboard的Qt5分支复制到.py文件旁边的
qml/QtQuick/VirtualKeyboard/Styles/
文件夹中。mkdir -p qml/QtQuick/VirtualKeyboard/Styles/ git clone -b 5.15.2 https://code.qt.io/qt/qtvirtualkeyboard.git cp -rf qtvirtualkeyboard/src/virtualkeyboard/content/styles/default qml/QtQuick/VirtualKeyboard/Styles/qt5default
结构应该如下:
├── main.py └── qml └── QtQuick └── VirtualKeyboard └── Styles └── qt5default ├── images │ ├── backspace-868482.svg │ ├── check-868482.svg │ ├── enter-868482.svg │ ├── globe-868482.svg │ ├── handwriting-868482.svg │ ├── hidekeyboard-868482.svg │ ├── search-868482.svg │ ├── selectionhandle-bottom.svg │ ├── shift-80c342.svg │ ├── shift-868482.svg │ ├── shift-c5d6b6.svg │ └── textmode-868482.svg ├── style.qml └── virtualkeyboard_default_style.qrc
换行:
readonly property string resourcePrefix: "qrc:/QtQuick/VirtualKeyboard/content/styles/default/"
至:
readonly property string resourcePrefix: ""
在 .py 中,您必须将 qml 包含到 QML_IMPORT_PATH 并使用新样式设置 QT_VIRTUALKEYBOARD_STYLE:
import os from pathlib import Path import sys from PySide6.QtWidgets import QApplication, QLineEdit CURRENT_DIRECTORY = Path(__file__).resolve().parent def main(): os.environ["QML_IMPORT_PATH"] = os.fspath(CURRENT_DIRECTORY / "qml") os.environ["QT_IM_MODULE"] = "qtvirtualkeyboard" os.environ["QT_VIRTUALKEYBOARD_STYLE"] = "qt5default" app = QApplication(sys.argv) w = QLineEdit() w.show() sys.exit(app.exec()) if __name__ == "__main__": main()