我看到有人说如果你想把QGraphicsScene的坐标原点放在QGraphicsView的原点,即左上角。您需要让它们具有相同的大小。
所以这就是我所做的:
import sys
from PyQt5.QtWidgets import QApplication, QGraphicsLineItem,
QGraphicsScene, QGraphicsView
class Demo(QGraphicsView):
def __init__(self):
super(Demo, self).__init__()
self.resize(300, 300)
self.line = QGraphicsLineItem()
self.line.setLine(0, 0, 100, 100)
self.scene = QGraphicsScene()
self.scene.setSceneRect(0, 0, 300, 300)
self.scene.addItem(self.line)
self.setScene(self.scene)
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = Demo()
demo.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)
视图的大小是 300x300,我用它setSceneRect()来确保场景的大小是 300x300。
然而,当我使用 时setSceneRect(0, 0, 150, 150),原点不在那里,而是在 (75, 75)!

为什么?我认为前两个参数设置setSceneRect(x, y, w, h)坐标原点应该在哪里。当Scene小于View时,如何确保Scene的原点在左上角?
任何帮助,将不胜感激!
平台:Windows 10
Qt版本:5.15.1
例如,我想C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt在 pro 文件中包含此路径。
以下是我尝试过的方法:
使用$$quote():
INCLUDEPATH += $$quote(C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt)
Run Code Online (Sandbox Code Playgroud)
使用" ":
INCLUDEPATH += "C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt"
Run Code Online (Sandbox Code Playgroud)
一起使用$$quote和" ":
INCLUDEPATH += $$quote("C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\ucrt")
Run Code Online (Sandbox Code Playgroud)
改成:\\/
INCLUDEPATH += $$quote("C:/Program Files (x86)/Windows Kits/10/Include/10.0.18362.0/ucrt")
Run Code Online (Sandbox Code Playgroud)
一切都不好,这是我不断收到的错误:
我想知道是否可以在不使用qt设计器制作UI的情况下动态更改语言(翻译)?这意味着我不想使用功能retranslateUi()来更新程序接口。
这是我的代码,但是我停留在标有#1#2#3的行上。不知道我应该使用什么来更新界面。
import sys
from PyQt5.QtCore import Qt, QTranslator
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel,
QComboBox, QVBoxLayout
class Demo(QWidget):
def __init__(self):
super(Demo, self).__init__()
self.button = QPushButton(self.tr('Start'), self)
self.label = QLabel(self.tr('Hello, World'), self)
self.label.setAlignment(Qt.AlignCenter)
self.combo = QComboBox(self)
self.combo.addItem('English')
self.combo.addItem('??')
self.combo.addItem('français')
self.combo.currentTextChanged.connect(self.change_func)
self.trans = QTranslator(self)
self.v_layout = QVBoxLayout()
self.v_layout.addWidget(self.combo)
self.v_layout.addWidget(self.button)
self.v_layout.addWidget(self.label)
self.setLayout(self.v_layout)
def change_func(self):
print(self.combo.currentText())
if self.combo.currentText() == '??':
self.trans.load('eng-chs')
_app = QApplication.instance()
_app.installTranslator(self.trans)
# 1
elif self.combo.currentText() == 'français':
self.trans.load('eng-fr')
_app = QApplication.instance()
_app.installTranslator(self.trans)
# 2
else:
_app = QApplication.instance() …Run Code Online (Sandbox Code Playgroud)