幽沉谢世事,俯默窥唐虞。这篇文章主要讲述如何在PySide / PyQt中连接QApplication()和QWidget()对象?相关的知识,希望能为你提供帮助。
QApplication()和QWidget()如何连接?
这是我复制的示例代码,它创建了QApplication对象和QWidget对象,但两个对象之间没有链接。我期待像app.setWidget(did)
这样的东西教PySide / PyQt控制器关于创建的小部件。
# http://zetcode.com/gui/pysidetutorial/firstprograms/
# 1. PySide.QtGui is the class
import sys
from PySide import QtGui# 2. setup the application
app = QtGui.QApplication(sys.argv)# 3. create the widget and setup
wid = QtGui.QWidget()
wid.resize(250, 150)
wid.setWindowTitle('Simple')# 4. Show the widget
wid.show()# 5. execute the app
sys.exit(app.exec_())
【如何在PySide / PyQt中连接QApplication()和QWidget()对象()】这背后的魔力是什么?
答案
QApplication
是一个单身人士所以它很容易,因为QWidget
可以做:QApplication.instance()
并与QApplication
实例互动。事实上,在
QWidget
导致错误之前尝试实例化QApplication
:>
>
>
QtGui.QWidget()
QWidget: Must construct a QApplication before a QPaintDevice
这可能意味着这就是发生的事情。
编辑:我已经下载了qt源,事实上,在
src/gui/kernel/qwidget.cpp
,328行,有:if (!qApp) {
qFatal("QWidget: Must construct a QApplication before a QPaintDevice");
return;
}
其中
qApp
是指向QApplication
实例的指针(即它相当于调用QApplication.instance()
)。因此,最后,
QWidget
通过全局变量与QApplication
进行交互,即使它没有必要。他们可能使用qApp
而不是QApplication.instance()
来避免在创建/销毁许多QWidget
s时可能发生的不必要的开销。推荐阅读
- 我以普通用户的身份安装了Android Studio软件包。那么如何以root身份打开它呢()
- 使用Jmeter在移动App上执行负载测试
- 如何在对应用程序运行某些测试之前在Jmeter中设置app_id和app_secret属性()
- Android GridLayout中的单元格边缘
- Android ClassNotFoundException(在路径上找不到类:Dexpathlist)
- LibGDX从Core模块(MyGdxGame)中的android模块(AndroidLauncher)获取变量()
- Libgdx(Android) - ImageButton尺寸错误(比例尺)
- 如何在Android Studio中调试“桌面”libgdx应用程序
- Android Studio -Libgdx-无法使用Gradle发行版“https://services.gradle.org/distributions/gradle-4.4-all.zip”执行