PySide6.QtCore.QObject¶
- class QObject¶
-
Inherited by:
QWidget
,QWizardPage
,QToolBar
,QTabWidget
,QTabBar
,QStatusBar
,QSplitterHandle
,QSplashScreen
,QSizeGrip
,QRubberBand
,QRhiWidget
,QProgressBar
,QMenuBar
,QMenu
,QMdiSubWindow
,QMainWindow
,QLineEdit
,QKeySequenceEdit
,QGroupBox
,QFrame
,QToolBox
,QStackedWidget
,QSplitter
,QLabel
,QLCDNumber
,QAbstractScrollArea
,QTextEdit
,QTextBrowser
,QScrollArea
,QPlainTextEdit
,QMdiArea
,QGraphicsView
,QAbstractItemView
,QTreeView
,QTreeWidget
,QHelpContentWidget
,QTableView
,QTableWidget
,QListView
,QUndoView
,QListWidget
,QHelpIndexWidget
,QHeaderView
,QColumnView
,QPdfView
,QFocusFrame
,QDockWidget
,QDialogButtonBox
,QDialog
,QWizard
,QProgressDialog
,QMessageBox
,QInputDialog
,QFontDialog
,QErrorMessage
,QColorDialog
,QPrintPreviewDialog
,QPageSetupDialog
,QAbstractPrintDialog
,QPrintDialog
,QComboBox
,QFontComboBox
,QCalendarWidget
,QAbstractSpinBox
,QSpinBox
,QDoubleSpinBox
,QDateTimeEdit
,QTimeEdit
,QDateEdit
,QAbstractSlider
,QSlider
,QScrollBar
,QDial
,QAbstractButton
,QToolButton
,QRadioButton
,QPushButton
,QCommandLinkButton
,QCheckBox
,QSvgWidget
,QQuickWidget
,QPrintPreviewWidget
,QPdfPageSelector
,QOpenGLWidget
,QVideoWidget
,QHelpSearchResultWidget
,QHelpSearchQueryWidget
,QHelpFilterSettingsWidget
,QDesignerWidgetBoxInterface
,QDesignerPropertyEditorInterface
,QDesignerObjectInspectorInterface
,QDesignerFormWindowInterface
,QDesignerActionEditorInterface
,QSystemTrayIcon
,QStyle
,QCommonStyle
,QProxyStyle
,QScroller
,QLayout
,QStackedLayout
,QGridLayout
,QFormLayout
,QBoxLayout
,QVBoxLayout
,QHBoxLayout
,QGraphicsTransform
,QGraphicsScale
,QGraphicsRotation
,QGraphicsScene
,QGraphicsObject
,QGraphicsWidget
,QGraphicsProxyWidget
,QGraphicsTextItem
,QGraphicsSvgItem
,QGraphicsVideoItem
,QGraphicsItemAnimation
,QGraphicsEffect
,QGraphicsOpacityEffect
,QGraphicsDropShadowEffect
,QGraphicsColorizeEffect
,QGraphicsBlurEffect
,QGraphicsAnchor
,QGesture
,QTapGesture
,QTapAndHoldGesture
,QSwipeGesture
,QPinchGesture
,QPanGesture
,QDataWidgetMapper
,QCompleter
,QButtonGroup
,QAbstractItemDelegate
,QStyledItemDelegate
,QItemDelegate
,QMaskGenerator
,QQuickWebEngineProfile
,QWebEngineWebAuthUxRequest
,QWebEngineUrlSchemeHandler
,QWebEngineUrlRequestJob
,QWebEngineUrlRequestInterceptor
,QWebEngineProfile
,QWebEngineNotification
,QWebEngineNewWindowRequest
,QWebEngineNavigationRequest
,QWebEngineHistory
,QWebEngineDownloadRequest
,QWebEngineContextMenuRequest
,QWebEngineClientHints
,QWebChannelAbstractTransport
,QWebChannel
,QUiLoader
,QTextToSpeechEngine
,QTextToSpeech
,QAbstractItemModelTester
,QSvgRenderer
,QAbstractTransition
,QSignalTransition
,QEventTransition
,QMouseEventTransition
,QKeyEventTransition
,QAbstractState
,QState
,QStateMachine
,QHistoryState
,QFinalState
,QSqlDriver
,QSpatialSound
,QAudioRoom
,QAudioListener
,QAudioEngine
,QAmbientSound
,QModbusReply
,QModbusDevice
,QModbusServer
,QModbusTcpServer
,QModbusRtuSerialServer
,QModbusClient
,QModbusTcpClient
,QModbusRtuSerialClient
,QCanBusDevice
,QCanBus
,QSensorReading
,QTiltReading
,QTapReading
,QRotationReading
,QProximityReading
,QPressureReading
,QOrientationReading
,QMagnetometerReading
,QLightReading
,QLidReading
,QIRProximityReading
,QHumidityReading
,QGyroscopeReading
,QCompassReading
,QAmbientTemperatureReading
,QAmbientLightReading
,QAccelerometerReading
,QSensorBackend
,QSensor
,QTiltSensor
,QTapSensor
,QRotationSensor
,QProximitySensor
,QPressureSensor
,QOrientationSensor
,QMagnetometer
,QLightSensor
,QLidSensor
,QIRProximitySensor
,QHumiditySensor
,QGyroscope
,QCompass
,QAmbientTemperatureSensor
,QAmbientLightSensor
,QAccelerometer
,QScxmlStateMachine
,QScxmlInvokableServiceFactory
,QScxmlStaticScxmlServiceFactory
,QScxmlDynamicScxmlServiceFactory
,QScxmlInvokableService
,QScxmlDataModel
,QScxmlNullDataModel
,QScxmlCppDataModel
,QtROIoDeviceBase
,QtROServerIoDevice
,QtROClientIoDevice
,QRemoteObjectReplica
,QRemoteObjectRegistry
,QRemoteObjectDynamicReplica
,QRemoteObjectPendingCallWatcher
,QRemoteObjectNode
,QRemoteObjectAbstractPersistedStore
,QRemoteObjectSettingsStore
,QConnectionAbstractServer
,QQuickAttachedPropertyPropagator
,QQuick3DObject
,QQuick3DTextureData
,QQuick3DRenderExtension
,QQuick3DInstancing
,QQuick3DGeometry
,QSGTextureProvider
,QSGTexture
,QSGDynamicTexture
,QQuickTransform
,QQuickTextureFactory
,QQuickTextDocument
,QQuickRenderControl
,QQuickItemGrabResult
,QQuickItem
,QQuickRhiItem
,QQuickPaintedItem
,QQuickFramebufferObject
,QQuickImageResponse
,QQmlPropertyMap
,QQmlImageProviderBase
,QQuickImageProvider
,QQuickAsyncImageProvider
,QQmlFileSelector
,QQmlExtensionPlugin
,QQmlExpression
,QQmlContext
,QQmlComponent
,QJSEngine
,QQmlEngine
,QGeoSatelliteInfoSource
,QNmeaSatelliteInfoSource
,QGeoPositionInfoSource
,QNmeaPositionInfoSource
,QGeoAreaMonitorSource
,QPdfPageRenderer
,QPdfPageNavigator
,QPdfDocument
,QOpenGLVertexArrayObject
,QOpenGLTimerQuery
,QOpenGLTimeMonitor
,QOpenGLShaderProgram
,QOpenGLShader
,QOpenGLDebugLogger
,QOpcUaProvider
,QOpcUaPlugin
,QOpcUaNode
,QOpcUaKeyPair
,QOpcUaHistoryReadResponse
,QOpcUaGenericStructHandler
,QOpcUaClient
,QNearFieldTarget
,QNearFieldManager
,QAbstractOAuthReplyHandler
,QOAuthOobReplyHandler
,QOAuthUriSchemeReplyHandler
,QRestAccessManager
,QNetworkInformation
,QNetworkCookieJar
,QNetworkAccessManager
,QLocalServer
,QHttpMultiPart
,QDtlsClientVerifier
,QDnsLookup
,QAbstractNetworkCache
,QNetworkDiskCache
,QWindowCapture
,QVideoSink
,QVideoFrameInput
,QSoundEffect
,QScreenCapture
,QMediaRecorder
,QMediaDevices
,QMediaCaptureSession
,QImageCapture
,QCamera
,QAudioSource
,QAudioSink
,QAudioOutput
,QAudioInput
,QAudioDecoder
,QAudioBufferOutput
,QAudioBufferInput
,QMqttSubscription
,QPlaceReply
,QPlaceSearchSuggestionReply
,QPlaceSearchReply
,QPlaceMatchReply
,QPlaceIdReply
,QPlaceDetailsReply
,QPlaceContentReply
,QPlaceManagerEngine
,QPlaceManager
,QGeoServiceProvider
,QGeoRoutingManagerEngine
,QGeoRoutingManager
,QGeoRouteReply
,QGeoCodingManagerEngine
,QGeoCodingManager
,QGeoCodeReply
,QAbstractHttpServer
,QHttpServer
,QHelpSearchEngineCore
,QHelpSearchEngine
,QHelpFilterEngine
,QHelpEngineCore
,QHelpEngine
,QWindow
,QQuickWindow
,QQuickView
,QPaintDeviceWindow
,QOpenGLWindow
,QRasterWindow
,QValidator
,QRegularExpressionValidator
,QIntValidator
,QDoubleValidator
,QUndoStack
,QUndoGroup
,QTextObject
,QTextFrame
,QTextTable
,QTextBlockGroup
,QTextList
,QTextDocument
,QSyntaxHighlighter
,QStyleHints
,QShortcut
,QSessionManager
,QScreen
,QPdfWriter
,QOpenGLContextGroup
,QOpenGLContext
,QOffscreenSurface
,QInputMethod
,QInputDevice
,QPointingDevice
,QDrag
,QClipboard
,QActionGroup
,QAction
,QWidgetAction
,QAbstractTextDocumentLayout
,QPlainTextDocumentLayout
,Q3DGraphsWidgetItem
,Q3DSurfaceWidgetItem
,Q3DScatterWidgetItem
,Q3DBarsWidgetItem
,QXYModelMapper
,QValue3DAxisFormatter
,QLogValue3DAxisFormatter
,QPieSlice
,QPieModelMapper
,QGraphsTheme
,QCustom3DItem
,QCustom3DVolume
,QCustom3DLabel
,QBarSet
,QBarModelMapper
,QAbstractSeries
,QXYSeries
,QScatterSeries
,QLineSeries
,QSplineSeries
,QPieSeries
,QAreaSeries
,QAbstractDataProxy
,QSurfaceDataProxy
,QItemModelSurfaceDataProxy
,QHeightMapSurfaceDataProxy
,QScatterDataProxy
,QItemModelScatterDataProxy
,QBarDataProxy
,QItemModelBarDataProxy
,QAbstractAxis
,QValueAxis
,QDateTimeAxis
,QBarCategoryAxis
,QAbstract3DSeries
,QSurface3DSeries
,QScatter3DSeries
,QBar3DSeries
,QAbstract3DAxis
,QValue3DAxis
,QCategory3DAxis
,Q3DScene
,QExtensionManager
,QDesignerFormWindowToolInterface
,QDesignerFormWindowManagerInterface
,QDesignerFormEditorInterface
,QDBusVirtualObject
,QDBusServiceWatcher
,QDBusServer
,QDBusPendingCallWatcher
,QDBusAbstractInterfaceBase
,QDBusAbstractInterface
,QDBusInterface
,QDBusConnectionInterface
,QDBusAbstractAdaptor
,QTranslator
,QTimer
,QTimeLine
,QSocketNotifier
,QSignalMapper
,QSharedMemory
,QSettings
,QPluginLoader
,QMimeData
,QLibrary
,QItemSelectionModel
,QIODevice
,QSerialPort
,QNetworkReply
,QLocalSocket
,QAbstractSocket
,QUdpSocket
,QTcpSocket
,QWebSocketServer
,QOAuthHttpServerReplyHandler
,QTcpServer
,QSslServer
,QWaveDecoder
,QProcess
,QFutureWatcherBase
,QFutureWatcher
,QFileSystemWatcher
,QFileSelector
,QFileDevice
,QSaveFile
,QFile
,QTemporaryFile
,QEventLoop
,QThreadPool
,QThread
,QCoreApplication
,QGuiApplication
,QApplication
,QWebSocket
,QAbstractOAuth
,QOAuth1
,QAbstractOAuth2
,QOAuth2AuthorizationCodeFlow
,QSslSocket
,QDtls
,QMqttClient
,QMovie
,QFileDialog
,QWebEngineView
,QWebEnginePage
,QWebEngineCookieStore
,QRemoteObjectHostBase
,QRemoteObjectRegistryHost
,QRemoteObjectHost
,QQmlApplicationEngine
,QMediaPlayer
,QBuffer
,QAbstractItemModel
,QFileSystemModel
,QAbstractItemModelReplica
,QPdfBookmarkModel
,QHelpContentModel
,QStandardItemModel
,QConcatenateTablesProxyModel
,QAbstractTableModel
,QSqlQueryModel
,QSqlTableModel
,QSqlRelationalTableModel
,QAbstractProxyModel
,QTransposeProxyModel
,QSortFilterProxyModel
,QIdentityProxyModel
,QAbstractListModel
,QWebEngineHistoryModel
,QPdfSearchModel
,QPdfLinkModel
,QStringListModel
,QHelpIndexModel
,QAbstractEventDispatcher
,QAbstractAnimation
,QVariantAnimation
,QPropertyAnimation
,QPauseAnimation
,QAnimationGroup
,QSequentialAnimationGroup
,QParallelAnimationGroup
,QFutureWatcherVoid
,QFutureWatcherQString
,QCoapReply
,QCoapResourceDiscoveryReply
,QCoapClient
,QVXYModelMapper
,QVPieModelMapper
,QVBarModelMapper
,QLogValueAxis
,QLegendMarker
,QXYLegendMarker
,QPieLegendMarker
,QLegend
,QHXYModelMapper
,QHPieModelMapper
,QHBarModelMapper
,QColorAxis
,QChartView
,QChart
,QPolarChart
,QCategoryAxis
,QCandlestickSet
,QCandlestickSeries
,QCandlestickModelMapper
,QVCandlestickModelMapper
,QHCandlestickModelMapper
,QCandlestickLegendMarker
,QBoxSet
,QBoxPlotSeries
,QBoxPlotModelMapper
,QVBoxPlotModelMapper
,QHBoxPlotModelMapper
,QBoxPlotLegendMarker
,QBarLegendMarker
,QAreaLegendMarker
,QAbstractBarSeries
,QBarSeries
,QStackedBarSeries
,QPercentBarSeries
,QHorizontalStackedBarSeries
,QHorizontalPercentBarSeries
,QHorizontalBarSeries
,QLowEnergyService
,QLowEnergyController
,QBluetoothSocket
,QBluetoothServiceDiscoveryAgent
,QBluetoothLocalDevice
,QBluetoothDeviceDiscoveryAgent
,QBluetoothServer
,QTextureWrapMode
,QStencilTestArguments
,QStencilOperationArguments
,QRenderCaptureReply
,QRenderCapabilities
,QPickEvent
,QPickTriangleEvent
,QPickPointEvent
,QPickLineEvent
,QGraphicsApiFilter
,QWheelEvent
,QMouseEvent
,QKeyEvent
,Qt3DWindow
,QNode
,QTechnique
,QShaderProgramBuilder
,QShaderProgram
,QShaderImage
,QRenderTargetOutput
,QRenderState
,QStencilTest
,QStencilOperation
,QStencilMask
,QSeamlessCubemap
,QScissorTest
,QRasterMode
,QPolygonOffset
,QPointSize
,QNoDepthMask
,QMultiSampleAntiAliasing
,QLineWidth
,QFrontFace
,QDithering
,QDepthTest
,QDepthRange
,QCullFace
,QColorMask
,QClipPlane
,QBlendEquationArguments
,QBlendEquation
,QAlphaTest
,QAlphaCoverage
,QRenderPass
,QPickingSettings
,QParameter
,QFrameGraphNode
,QWaitFence
,QViewport
,QTechniqueFilter
,QForwardRenderer
,QSubtreeEnabler
,QSortPolicy
,QSetFence
,QRenderTargetSelector
,QRenderSurfaceSelector
,QRenderStateSet
,QRenderPassFilter
,QRenderCapture
,QProximityFilter
,QNoPicking
,QNoDraw
,QMemoryBarrier
,QLayerFilter
,QFrustumCulling
,QDispatchCompute
,QDebugOverlay
,QClearBuffers
,QCameraSelector
,QBufferCapture
,QBlitFramebuffer
,QFilterKey
,QEffect
,QAbstractTextureImage
,QTextureImage
,QPaintedTextureImage
,QAbstractTexture
,QTextureRectangle
,QTextureLoader
,QTextureCubeMapArray
,QTextureCubeMap
,QTextureBuffer
,QTexture3D
,QTexture2DMultisampleArray
,QTexture2DMultisample
,QTexture2DArray
,QTexture2D
,QTexture1DArray
,QTexture1D
,QSharedGLTexture
,QAxisSetting
,QAxis
,QAction
,QAbstractPhysicalDevice
,QMouseDevice
,QKeyboardDevice
,QAbstractAxisInput
,QButtonAxisInput
,QAnalogAxisInput
,QAbstractActionInput
,QInputSequence
,QInputChord
,QActionInput
,QSpriteSheetItem
,QAbstractSpriteSheet
,QSpriteSheet
,QSpriteGrid
,QJoint
,QGeometryView
,QTorusGeometryView
,QSphereGeometryView
,QPlaneGeometryView
,QCylinderGeometryView
,QCuboidGeometryView
,QConeGeometryView
,QGeometry
,QTorusGeometry
,QSphereGeometry
,QPlaneGeometry
,QExtrudedTextGeometry
,QCylinderGeometry
,QCuboidGeometry
,QConeGeometry
,QEntity
,QCamera
,QText2DEntity
,QSkyboxEntity
,QAbstractCameraController
,QOrbitCameraController
,QFirstPersonCameraController
,QComponent
,QShaderData
,QSceneLoader
,QRenderTarget
,QRenderSettings
,QObjectPicker
,QMaterial
,QTextureMaterial
,QPhongMaterial
,QPhongAlphaMaterial
,QPerVertexColorMaterial
,QNormalDiffuseSpecularMapMaterial
,QNormalDiffuseMapMaterial
,QNormalDiffuseMapAlphaMaterial
,QMorphPhongMaterial
,QMetalRoughMaterial
,QGoochMaterial
,QDiffuseSpecularMaterial
,QDiffuseSpecularMapMaterial
,QDiffuseMapMaterial
,QLevelOfDetail
,QLevelOfDetailSwitch
,QLayer
,QEnvironmentLight
,QComputeCommand
,QCameraLens
,QAbstractRayCaster
,QScreenRayCaster
,QRayCaster
,QAbstractLight
,QSpotLight
,QPointLight
,QDirectionalLight
,QFrameAction
,QMouseHandler
,QLogicalDevice
,QKeyboardHandler
,QInputSettings
,QAxisAccumulator
,QTransform
,QCoreSettings
,QBuffer
,QBoundingVolume
,QPickingProxy
,QGeometryRenderer
,QMesh
,QTorusMesh
,QSphereMesh
,QPlaneMesh
,QExtrudedTextMesh
,QCylinderMesh
,QCuboidMesh
,QConeMesh
,QAttribute
,QAspectEngine
,QArmature
,QAbstractSkeleton
,QSkeletonLoader
,QSkeleton
,QAbstractAspect
,QRenderAspect
,QLogicAspect
,QInputAspect
,QCoreAspect
,QMorphTarget
,QClock
,QChannelMapper
,QAnimationGroup
,QAnimationController
,QAnimationAspect
,QAbstractClipBlendNode
,QLerpClipBlend
,QClipBlendValue
,QAdditiveClipBlend
,QAbstractClipAnimator
,QClipAnimator
,QBlendedClipAnimator
,QAbstractChannelMapping
,QSkeletonMapping
,QChannelMapping
,QCallbackMapping
,QAbstractAnimationClip
,QAnimationClipLoader
,QAnimationClip
,QAbstractAnimation
,QVertexBlendAnimation
,QMorphingAnimation
,QKeyframeAnimation
概要¶
属性¶
objectNameᅟ
- 此对象的名称
方法¶
def
__init__()
def
blockSignals()
def
children()
def
connect()
def
disconnect()
def
dumpObjectInfo()
def
dumpObjectTree()
def
emit()
def
findChild()
def
findChildren()
def
inherits()
def
isWidgetType()
def
isWindowType()
def
killTimer()
def
moveToThread()
def
objectName()
def
parent()
def
property()
def
receivers()
def
sender()
def
setObjectName()
def
setParent()
def
setProperty()
def
signalsBlocked()
def
startTimer()
def
thread()
def
tr()
虚拟方法¶
def
childEvent()
def
connectNotify()
def
customEvent()
def
event()
def
eventFilter()
def
metaObject()
def
timerEvent()
插槽¶
def
deleteLater()
信号¶
def
destroyed()
静态函数¶
def
connect()
def
disconnect()
注意
本文档可能包含从C++自动翻译到Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,您也可以通过在我们的https:/bugreports.qt.io/projects/PYSIDE上创建工单来告知我们。
详细描述¶
QObject
是 Qt 对象模型 的核心。该模型的核心特性是一个非常强大的无缝对象通信机制,称为 信号和槽。你可以使用connect()
将信号连接到槽,并使用disconnect()
销毁连接。为了避免无限的通知循环,你可以使用blockSignals()
临时阻塞信号。受保护的函数connectNotify()
和disconnectNotify()
使得跟踪连接成为可能。QObjects 在对象树中组织自己。当你创建一个
QObject
并将另一个对象作为父对象时,该对象会自动将自己添加到父对象的children()
列表中。父对象拥有该对象的所有权;也就是说,它会在其析构函数中自动删除其子对象。你可以通过名称和可选的类型使用findChild()
或findChildren()
来查找对象。每个对象都有一个
objectName()
,并且可以通过相应的metaObject()
找到其类名(参见className()
)。你可以使用inherits()
函数来确定对象的类是否继承了QObject
继承层次结构中的另一个类。当一个对象被删除时,它会发出一个
destroyed()
信号。你可以捕获这个信号以避免对QObjects的悬空引用。QObjects 可以通过
event()
接收事件,并过滤其他对象的事件。详情请参见installEventFilter()
和eventFilter()
。为了方便处理,可以重新实现childEvent()
来捕获子事件。最后但同样重要的是,
QObject
在 Qt 中提供了基本的计时器支持;有关计时器的高级支持,请参见QChronoTimer
。请注意,
Q_OBJECT
宏对于任何实现信号、槽或属性的对象都是必需的。您还需要在源文件上运行元对象编译器。我们强烈建议在所有QObject
的子类中使用此宏,无论它们是否实际使用信号、槽和属性,因为如果不这样做,可能会导致某些函数表现出奇怪的行为。所有Qt小部件都继承自
QObject
。便利函数isWidgetType()
返回一个对象是否实际上是一个小部件。它比qobject_cast
(obj)或obj-> inherits
(“QWidget”)快得多。一些
QObject
函数,例如children()
,返回一个QObjectList
。QObjectList
是QList
<QObject
*> 的 typedef。线程亲和性¶
一个
QObject
实例被称为具有线程亲和性,或者说它存在于某个线程中。当一个QObject
接收到一个queued signal
或一个posted event时,槽或事件处理程序将在该对象所在的线程中运行。默认情况下,
QObject
存在于它被创建的线程中。可以使用thread()
查询对象的线程关联性,并使用moveToThread()
更改它。所有QObject必须与其父对象存在于同一线程中。因此:
setParent()
如果涉及的两个 QObject 位于不同的线程中,将会失败。当一个
QObject
被移动到另一个线程时,它的所有子对象也会自动被移动。moveToThread()
如果QObject
有父对象,将会失败。如果在
run()
中创建了 QObjects,它们不能成为QThread
对象的子对象,因为QThread
并不存在于调用run()
的线程中。
注意
一个
QObject
的成员变量不会自动成为其子对象。必须通过传递指向子对象的constructor
的指针,或者通过调用setParent()
来设置父子关系。如果没有这一步,当调用moveToThread()
时,对象的成员变量将保留在旧线程中。没有复制构造函数或赋值运算符¶
QObject
既没有复制构造函数也没有赋值运算符。这是设计上的考虑。实际上,它们被声明了,但在一个private
部分中使用了宏Q_DISABLE_COPY()
。事实上,所有从QObject
(直接或间接)派生的Qt类都使用这个宏来声明它们的复制构造函数和赋值运算符为私有。原因可以在Qt对象模型页面上关于身份与值的讨论中找到。主要的结果是,你应该使用指向
QObject
(或你的QObject
子类)的指针,而不是试图将你的QObject
子类作为值使用。例如,如果没有复制构造函数,你不能使用QObject
的子类作为存储在容器类中的值。你必须存储指针。自动连接¶
Qt的元对象系统提供了一种机制,可以自动连接
QObject
子类及其子对象之间的信号和槽。只要对象定义了合适的对象名称,并且槽遵循简单的命名约定,这种连接就可以在运行时通过connectSlotsByName()
函数来执行。uic 生成代码,调用此函数以在通过 Qt Widgets Designer 创建的表单上的小部件之间执行自动连接。有关在 Qt Widgets Designer 中使用自动连接的更多信息,请参阅 Qt Widgets Designer 手册中的“在应用程序中使用设计器 UI 文件”部分。
动态属性¶
动态属性可以在运行时添加到
QObject
实例中或从中移除。动态属性不需要在编译时声明,但它们提供了与静态属性相同的优势,并使用相同的API进行操作 - 使用property()
来读取它们,使用setProperty()
来写入它们。Qt Widgets Designer 支持动态属性,标准 Qt 小部件和用户创建的表单都可以赋予动态属性。
国际化 (I18n)¶
所有
QObject
子类都支持 Qt 的翻译功能,使得应用程序的用户界面可以翻译成不同的语言。为了使用户可见的文本可翻译,必须将其包装在对
tr()
函数的调用中。这在《编写翻译源代码》文档中有详细解释。另请参阅
QMetaObject
QPointer
QObjectCleanupHandler
Q_DISABLE_COPY()
对象树与所有权注意
当使用
from __feature__ import true_property
时,属性可以直接使用,否则通过访问器函数使用。- property objectNameᅟ: str¶
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
此属性保存此对象的名称。
你可以使用
findChild()
通过名称(和类型)找到一个对象。你可以使用findChildren()
找到一组对象。qDebug("MyClass.setPrecision(): (%s) invalid precision %f", qPrintable(objectName()), newPrecision)
默认情况下,此属性包含一个空字符串。
另请参阅
- Access functions:
构造一个具有父对象
parent
的对象。对象的父对象可以被视为对象的所有者。例如,对话框是其包含的“确定”和“取消”按钮的父对象。
父对象的析构函数会销毁所有子对象。
将
parent
设置为None
会构造一个没有父对象的对象。如果该对象是一个小部件,它将成为顶层窗口。- blockSignals(b)¶
- Parameters:
b – 布尔值
- Return type:
布尔
如果
block
为 true,则此对象发出的信号将被阻塞(即,发出信号不会调用与其连接的任何内容)。如果block
为 false,则不会发生此类阻塞。返回值是
signalsBlocked()
的先前值。请注意,即使此对象的信号已被阻止,
destroyed()
信号仍将被发出。在被阻塞时发出的信号不会被缓冲。
- childEvent(event)¶
- Parameters:
事件 –
QChildEvent
此事件处理程序可以在子类中重新实现以接收子事件。事件通过
event
参数传递。ChildAdded
和ChildRemoved
事件在子对象被添加或移除时发送给对象。在这两种情况下,你只能依赖子对象是一个QObject
,或者如果isWidgetType()
返回true
,则是一个 QWidget。(这是因为在ChildAdded
的情况下,子对象尚未完全构造,而在ChildRemoved
的情况下,它可能已经被销毁了)。ChildPolished
事件在子部件被优化或添加优化子部件时发送给部件。如果你接收到一个子部件优化事件,通常意味着子部件的构造已经完成。然而,这并不保证,并且在部件构造函数的执行过程中可能会传递多个优化事件。对于每个子部件,您会收到一个
ChildAdded
事件,零个或多个ChildPolished
事件,以及一个ChildRemoved
事件。如果子元素在添加后立即被移除,则省略
ChildPolished
事件。如果子元素在构造和销毁过程中被多次处理,你可能会收到同一个子元素的多个子元素处理事件,每次都有不同的虚拟表。另请参阅
返回一个子对象列表。
QObjectList
类在
头文件中定义如下:第一个添加的子项是列表中的
first
对象,最后一个添加的子项是列表中的last
对象,即新的子项被追加到末尾。请注意,当QWidget子控件被提升或降低时,列表顺序会发生变化。被提升的控件将成为列表中的最后一个对象,而被降低的控件将成为列表中的第一个对象。
- connect(signal, functor[, type=Qt.AutoConnection])¶
- Parameters:
signal – str
函子 –
PyCallable
type –
ConnectionType
- Return type:
- static connect(sender, signal, functor[, type=Qt.AutoConnection])
- Parameters:
sender –
QObject
signal – str
函子 –
PyCallable
type –
ConnectionType
- Return type:
- connect(sender, signal, member[, type=Qt.AutoConnection])
- Parameters:
sender –
QObject
signal – str
member – str
type –
ConnectionType
- Return type:
此函数重载了
connect()
。将来自
sender
对象的signal
连接到此对象的method
。等同于 connect(
sender
,signal
,this
,method
,type
)。每次建立的连接都会发出一个信号,因此重复的连接会发出两个信号。你可以使用
disconnect()
来断开连接。另请参阅
- connect(signal, receiver, method[, type=Qt.AutoConnection])
- Parameters:
signal – str
receiver –
QObject
method – str
type –
ConnectionType
- Return type:
- static connect(sender, signal, receiver, method[, type=Qt.AutoConnection])
- Parameters:
sender –
QObject
signal –
QMetaMethod
receiver –
QObject
method –
QMetaMethod
type –
ConnectionType
- Return type:
从
sender
对象中的signal
创建一个给定type
的连接,连接到receiver
对象中的method
。返回一个可用于稍后断开连接的句柄。如果无法创建连接,例如参数无效,则连接句柄将无效。您可以通过将其转换为布尔值来检查
Connection
是否有效。此函数的工作方式与
connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
相同,但它使用QMetaMethod
来指定信号和方法。另请参阅
ConnectionType type)
- static connect(sender, signal, context, functor[, type=Qt.AutoConnection])
- Parameters:
sender –
QObject
signal – str
context –
QObject
函子 –
PyCallable
type –
ConnectionType
- Return type:
- static connect(sender, signal, receiver, member[, type=Qt.AutoConnection])
- Parameters:
sender –
QObject
signal – str
receiver –
QObject
member – str
type –
ConnectionType
- Return type:
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
从
sender
对象中的signal
创建一个给定type
的连接,连接到receiver
对象中的method
。返回一个可用于稍后断开连接的句柄。在指定
signal
和method
时,必须使用SIGNAL()
和SLOT()
宏,例如:label = QLabel() scrollBar = QScrollBar() QObject.connect(scrollBar, SIGNAL(valueChanged(int)), label, SLOT(setNum(int)))
此示例确保标签始终显示当前滚动条的值。请注意,信号和槽参数不得包含任何变量名称,只能包含类型。例如,以下代码将无法工作并返回false:
# WRONG QObject.connect(scrollBar, SIGNAL(valueChanged(int value)), label, SLOT(setNum(int value)))
信号也可以连接到另一个信号:
class MyWidget(QWidget): Q_OBJECT # public MyWidget() # signals def buttonClicked(): # private myButton = QPushButton() def __init__(self): myButton = QPushButton(self) connect(myButton, SIGNAL(clicked()), self, SIGNAL(buttonClicked()))
在这个例子中,
MyWidget
构造函数从一个私有成员变量中传递信号,并将其以与MyWidget
相关的名称提供。一个信号可以连接到许多槽和信号。许多信号可以连接到一个槽。
如果一个信号连接到多个槽,当信号发出时,槽将按照连接的顺序被激活。
该函数返回一个
Connection
,表示如果成功将信号连接到槽,则返回连接句柄。如果无法创建连接,例如如果QObject
无法验证signal
或method
的存在,或者它们的签名不兼容,则连接句柄将无效。您可以通过将其转换为布尔值来检查句柄是否有效。默认情况下,每次建立连接时都会发出一个信号;对于重复的连接会发出两个信号。你可以通过一次
disconnect()
调用来断开所有这些连接。如果你传递UniqueConnection
type
,则只有在连接不是重复的情况下才会建立连接。如果已经存在重复的连接(完全相同的信号连接到相同对象的完全相同槽),连接将失败,并且connect将返回一个无效的Connection
。注意
Qt::UniqueConnections 不适用于 lambda 表达式、非成员函数和函数对象;它们仅适用于连接到成员函数。
可选的
type
参数描述了要建立的连接类型。特别是,它决定了特定信号是立即传递到槽还是排队等待稍后传递。如果信号被排队,参数的类型必须是 Qt 的元对象系统已知的类型,因为 Qt 需要复制参数以在幕后将它们存储在事件中。如果您尝试使用排队连接并收到错误消息QObject.connect: Cannot queue arguments of type 'MyType' (Make sure 'MyType' is registered using qRegisterMetaType().)
在建立连接之前,调用
qRegisterMetaType()
来注册数据类型。另请参阅
disconnect()
sender()
qRegisterMetaType()
Q_DECLARE_METATYPE()
基于字符串和基于函子的连接之间的差异
- connectNotify(signal)¶
- Parameters:
信号 –
QMetaMethod
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
当某些东西连接到这个对象中的
signal
时,会调用这个虚拟函数。如果你想将
signal
与特定信号进行比较,你可以使用fromSignal()
如下所示:if signal == QMetaMethod.fromSignal(MyObject.valueChanged): # signal is valueChanged
警告
此函数违反了面向对象的模块化原则。然而,当您需要在某些东西连接到信号时执行昂贵的初始化时,它可能很有用。
警告
此函数由执行连接的线程调用,该线程可能与对象所在的线程不同。此函数也可能在
QObject
内部互斥锁锁定的情况下调用。因此,不允许在重新实现中重新进入任何QObject
函数,包括isSignalConnected()
。如果在重新实现中锁定互斥锁,请确保不要在其他地方持有该互斥锁的情况下调用QObject
函数,否则会导致死锁。此事件处理程序可以在子类中重新实现以接收自定义事件。自定义事件是用户定义的事件,其类型值至少与
User
枚举的Type
项一样大,并且通常是QEvent
的子类。事件通过event
参数传递。- deleteLater()¶
安排此对象进行删除。
当控制返回到事件循环时,对象将被删除。如果在调用此函数时事件循环未运行(例如,在
exec()
之前对对象调用deleteLater()),则对象将在事件循环启动后被删除。如果在主事件循环停止后调用deleteLater(),则对象将不会被删除。如果对存在于没有运行事件循环的线程中的对象调用deleteLater(),则对象将在线程结束时被销毁。请注意,进入和离开一个新的事件循环(例如,通过打开一个模态对话框)将不会执行延迟删除;要使对象被删除,控制必须返回到调用deleteLater()的事件循环。这不适用于在前一个嵌套事件循环仍在运行时删除的对象:Qt事件循环将在新的嵌套事件循环开始时立即删除这些对象。
在Qt没有通过例如
exec()
或exec()
驱动事件分发器的情况下,延迟删除将不会自动处理。为了确保在这种情况下的延迟删除,可以使用以下解决方法:const auto *eventDispatcher = QThread::currentThread()->eventDispatcher(); QObject::connect(eventDispatcher, &QAbstractEventDispatcher::aboutToBlock, QThread::currentThread(), []{ if (QThread::currentThread()->loopLevel() == 0) QCoreApplication::sendPostedEvents(nullptr, QEvent::DeferredDelete); } );
另请参阅
destroyed()
QPointer
此信号在对象
obj
被销毁之前立即发出,在所有QPointer
实例被通知之后,并且不能被阻止。所有对象的子对象在此信号发出后立即被销毁。
另请参阅
deleteLater()
QPointer
- static disconnect(connection)¶
- Parameters:
连接 –
Connection
- Return type:
布尔
断开连接。
如果
connection
无效或已经断开连接,则不做任何操作并返回false。另请参阅
- disconnect(receiver[, member=None])
- Parameters:
receiver –
QObject
member – str
- Return type:
布尔
此函数重载了
disconnect()
。断开此对象中所有信号与
receiver
的method
的连接。注意
在
connect()
和相应的disconnect()
调用中,使用相同的语法,即指向成员函数的指针或基于字符串的语法,使用SIGNAL
和SLOT
宏。为了避免不匹配,存储由
connect()
返回的连接句柄,并在调用disconnect()
时使用它。注意
如果一个
queued connection
断开连接,已经安排的事件可能仍然会被传递,导致接收者在连接断开后被调用。当涉及的对象中的任何一个被销毁时,信号-槽连接将被移除。
- disconnect(signal, functor)
- Parameters:
signal – str
函子 –
PyCallable
- Return type:
布尔
- static disconnect(sender, signal, functor)
- Parameters:
sender –
QObject
signal – str
函子 –
PyCallable
- Return type:
布尔
- disconnect(signal, receiver, member)
- Parameters:
signal – str
receiver –
QObject
member – str
- Return type:
布尔
此函数重载了
disconnect()
。断开
signal
与receiver
的method
的连接。注意
在
connect()
和相应的disconnect()
调用中,使用相同的语法,即指向成员函数的指针或基于字符串的语法,使用SIGNAL
和SLOT
宏。为了避免不匹配,存储由
connect()
返回的连接句柄,并在调用disconnect()
时使用它。注意
如果一个
queued connection
断开连接,已经安排的事件可能仍然会被传递,导致接收者在连接断开后被调用。当涉及的对象中的任何一个被销毁时,信号-槽连接将被移除。
注意
断开所有信号-槽连接也会断开
destroyed()
信号(如果已连接)。这样做可能会对依赖此信号进行资源清理的类产生不利影响。建议仅断开由应用程序代码连接的特定信号。- static disconnect(sender, signal, receiver, member)
- Parameters:
sender –
QObject
signal –
QMetaMethod
receiver –
QObject
成员 –
QMetaMethod
- Return type:
布尔
断开对象
sender
中的signal
与对象receiver
中的method
的连接。如果连接成功断开,则返回true
;否则返回false
。此函数提供了与
disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *method)
相同的功能,但使用QMetaMethod
来表示要断开连接的信号和方法。此外,如果满足以下条件,此函数将返回 false 并且不会断开任何信号和槽:
signal
不是发送者类或其父类的成员。method
不是接收者类或其父类之一的成员。signal
实例不代表信号。
注意
在
connect()
和相应的disconnect()
调用中,使用相同的语法,即指向成员函数的指针或基于字符串的语法,使用SIGNAL
和SLOT
宏。为了避免不匹配,存储由
connect()
返回的连接句柄,并在调用disconnect()
时使用它。注意
如果一个
queued connection
断开连接,已经安排的事件可能仍然会被传递,导致接收者在连接断开后被调用。QMetaMethod() 可以用作通配符,表示“任何信号”或“接收对象中的任何槽”。同样地,
None
可以用于receiver
,表示“任何接收对象”。在这种情况下,方法也应该是 QMetaMethod()。sender
参数永远不应为None
。注意
断开所有信号-槽连接也会断开
destroyed()
信号(如果已连接)。这样做可能会对依赖此信号进行资源清理的类产生不利影响。建议仅断开由应用程序代码连接的特定信号。另请参阅
disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *method)
- static disconnect(sender, signal, receiver, member)
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
断开对象
sender
中的signal
与对象receiver
中的method
的连接。如果连接成功断开,则返回true
;否则返回false
。当涉及的对象中的任何一个被销毁时,信号-槽连接将被移除。
disconnect()
通常以三种方式使用,如下例所示。断开与对象信号连接的所有内容:
disconnect(myObject, None, None, None)
等同于非静态重载函数
myObject.disconnect()
断开与特定信号连接的所有内容:
disconnect(myObject, SIGNAL(mySignal()), None, None)
等同于非静态重载函数
myObject.disconnect(SIGNAL(mySignal()))
断开特定接收器:
disconnect(myObject, None, myReceiver, None)
等同于非静态重载函数
myObject.disconnect(myReceiver)
注意
在
connect()
和相应的disconnect()
调用中,使用相同的语法,即指向成员函数的指针或基于字符串的语法,使用SIGNAL
和SLOT
宏。为了避免不匹配,存储由
connect()
返回的连接句柄,并在调用disconnect()
时使用它。注意
如果一个
queued connection
断开连接,已经安排的事件可能仍然会被传递,导致接收者在连接断开后被调用。None
可以用作通配符,分别表示“任何信号”、“任何接收对象”或“接收对象中的任何槽”。sender
可能永远不会是None
。(你不能在一次调用中断开多个对象的信号。)如果
signal
是None
,它会断开receiver
和method
与任何信号的连接。如果不是,则只断开指定的信号。如果
receiver
是None
,它会断开与signal
连接的任何内容。如果不是,则不会断开receiver
以外的对象中的插槽。如果
method
是None
,它会断开连接到receiver
的任何内容。如果不是,只有名为method
的槽会被断开,其他槽则保持不变。如果省略receiver
,则method
必须为None
,因此您无法在所有对象上断开特定名称的槽。- disconnectNotify(signal)¶
- Parameters:
信号 –
QMetaMethod
当某些东西从这个对象中的
signal
断开连接时,会调用此虚拟函数。请参阅
connectNotify()
以了解如何将signal
与特定信号进行比较的示例。如果所有信号都与此对象断开连接(例如,
disconnect()
的信号参数为None
),则disconnectNotify()仅被调用一次,且signal
将是一个无效的QMetaMethod
(isValid()
返回false
)。警告
此函数违反了面向对象的模块化原则。然而,它可能对优化访问昂贵资源有用。
警告
此函数由执行断开连接的线程调用,该线程可能与对象所在的线程不同。此函数也可能在
QObject
内部互斥锁锁定的情况下调用。因此,不允许在重新实现中重新进入任何QObject
函数,包括isSignalConnected()
。如果在重新实现中锁定互斥锁,请确保不要在其他地方持有该互斥锁的情况下调用QObject
函数,否则会导致死锁。- dumpObjectInfo()¶
将此对象的信号连接等信息转储到调试输出中。
- dumpObjectTree()¶
将子节点的树转储到调试输出。
- dynamicPropertyNames()¶
- Return type:
.list of QByteArray
返回使用
setProperty()
动态添加到对象的所有属性的名称。- emit(signal, arg__2)¶
- Parameters:
signal – str
arg__2
- Return type:
布尔
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
此虚拟函数接收对象的事件,如果事件
e
被识别并处理,则应返回 true。可以重新实现 event() 函数以自定义对象的行为。
确保为你未处理的所有事件调用父事件类的实现。
示例:
class MyClass(QWidget): Q_OBJECT # public MyClass(QWidget parent = None) ~MyClass() bool event(QEvent* ev) override if ev.type() == QEvent.PolishRequest: # overwrite handling of PolishRequest if any doThings() return True else:if (ev.type() == QEvent.Show) { # complement handling of Show if any doThings2() QWidget.event(ev) return True # Make sure the rest of events are handled return QWidget.event(ev)
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
如果此对象已安装为
watched
对象的事件过滤器,则过滤事件。在你重新实现这个函数时,如果你想过滤掉
event
,即停止它的进一步处理,返回true;否则返回false。示例:
class MainWindow(QMainWindow): # public MainWindow() # protected bool eventFilter(QObject obj, QEvent ev) override # private textEdit = QTextEdit() def __init__(self): textEdit = QTextEdit() setCentralWidget(textEdit) textEdit.installEventFilter(self) def eventFilter(self, QObject obj, QEvent event): if obj == textEdit: if event.type() == QEvent.KeyPress: keyEvent = QKeyEvent(event) print("Ate key press", keyEvent.key()) return True else: return False else: # pass the event on to the parent class return QMainWindow.eventFilter(obj, event)
请注意,在上面的示例中,未处理的事件被传递到基类的eventFilter()函数,因为基类可能已经为了其自身的内部目的重新实现了eventFilter()。
某些事件,例如
ShortcutOverride
必须明确接受(通过调用accept()
)以防止传播。- findChild(type[, name={}[, options=Qt.FindChildrenRecursively]])¶
- Parameters:
type –
PyTypeObject
name – str
options –
FindChildOption
的组合
- Return type:
对象
要找到某个
QObject
的子对象,该函数的第一个参数应为子对象的类型,第二个参数为子对象的名称:... parent = QWidget() ... # The first argument must be the child type child1 = parent.findChild(QPushButton, "child_button") child2 = parent.findChild(QWidget, "child_widget")
- findChildren(type, pattern[, options=Qt.FindChildrenRecursively])¶
- Parameters:
type –
PyTypeObject
pattern –
QRegularExpression
options –
FindChildOption
的组合
- Return type:
PySequence
- findChildren(type[, name={}[, options=Qt.FindChildrenRecursively]])
- Parameters:
type –
PyTypeObject
name – str
options –
FindChildOption
的组合
- Return type:
PySequence
与findChild方法类似,第一个参数应为子项的类型。
- inherits(classname)¶
- Parameters:
classname – str
- Return type:
布尔
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
如果此对象是继承
className
的类的实例,或者是继承className
的QObject
子类的实例,则返回true
;否则返回false
。一个类被认为继承自身。
示例:
timer = QTimer() # QTimer inherits QObject() timer.inherits("QTimer") # returns true timer.inherits("QObject") # returns true timer.inherits("QAbstractButton") # returns false # QVBoxLayout inherits QObject and QLayoutItem layout = QVBoxLayout() layout.inherits("QObject") # returns true layout.inherits("QLayoutItem") # returns true (even though QLayoutItem is not a QObject)
如果你需要确定一个对象是否是特定类的实例以便进行类型转换,考虑使用
qobject_cast
(object) 代替。 另请参阅
metaObject()
qobject_cast()
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
在此对象上安装事件过滤器
filterObj
。例如:monitoredObj.installEventFilter(filterObj)
事件过滤器是一个接收所有发送到此对象的事件的对象。过滤器可以停止事件或将其转发到此对象。事件过滤器
filterObj
通过其eventFilter()
函数接收事件。如果事件应被过滤(即停止),则eventFilter()
函数必须返回 true;否则必须返回 false。如果在单个对象上安装了多个事件过滤器,最后安装的过滤器将首先被激活。
如果已经为此对象安装了
filterObj
,此函数会将其移动,使其表现得像是最后安装的。这是一个
KeyPressEater
类,它会“吃掉”其监控对象的按键:class KeyPressEater(QObject): Q_OBJECT ... # protected bool eventFilter(QObject obj, QEvent event) override def eventFilter(self, QObject obj, QEvent event): if event.type() == QEvent.KeyPress: keyEvent = QKeyEvent(event) qDebug("Ate key press %d", keyEvent.key()) return True else: # standard event processing return QObject.eventFilter(obj, event)
以下是如何在两个小部件上安装它:
keyPressEater = KeyPressEater(self) pushButton = QPushButton(self) listView = QListView(self) pushButton.installEventFilter(keyPressEater) listView.installEventFilter(keyPressEater)
例如,QShortcut 类使用此技术来拦截快捷键的按下。
警告
如果你在
eventFilter()
函数中删除了接收者对象,请确保返回true。如果返回false,Qt会将事件发送到已删除的对象,程序将会崩溃。请注意,过滤对象必须与此对象在同一线程中。如果
filterObj
在不同的线程中,此函数将不执行任何操作。如果在调用此函数后,filterObj
或此对象被移动到不同的线程,事件过滤器将不会被调用,直到两个对象再次具有相同的线程亲和性(它不会被移除)。- isQuickItemType()¶
- Return type:
布尔
如果对象是QQuickItem,则返回
true
;否则返回false
。调用此函数相当于调用
inherits("QQuickItem")
,只是速度更快。- isSignalConnected(signal)¶
- Parameters:
信号 –
QMetaMethod
- Return type:
布尔
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
如果
signal
连接到至少一个接收器,则返回true
,否则返回false
。signal
必须是此对象的信号成员,否则行为是未定义的。valueChangedSignal = QMetaMethod.fromSignal(MyObject.valueChanged) if isSignalConnected(valueChangedSignal): data = QByteArray() data = get_the_value() # expensive operation valueChanged.emit(data)
如上代码片段所示,您可以使用此函数来避免昂贵的初始化或发出无人监听的信号。然而,在多线程应用程序中,连接可能会在此函数返回后和信号发出之前发生变化。
警告
此函数违反了面向对象的模块化原则。特别是,此函数不得从
connectNotify()
或disconnectNotify()
的重写中调用,因为这些函数可能会从任何线程中调用。- isWidgetType()¶
- Return type:
布尔
如果对象是一个小部件,则返回
true
;否则返回false
。调用此函数相当于调用
inherits("QWidget")
,只是速度更快。- isWindowType()¶
- Return type:
布尔
如果对象是一个窗口,则返回
true
;否则返回false
。调用此函数相当于调用
inherits("QWindow")
,只是速度更快。这是一个重载函数。
- killTimer(id)
- Parameters:
id – int
终止具有计时器标识符的计时器,
id
。定时器标识符由
startTimer()
在启动定时器事件时返回。另请参阅
- metaObject()¶
- Return type:
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
返回指向此对象的元对象的指针。
元对象包含有关继承
QObject
的类的信息,例如类名、超类名、属性、信号和槽。每个包含Q_OBJECT
宏的QObject
子类都将有一个元对象。元对象信息是信号/槽连接机制和属性系统所必需的。
inherits()
函数也使用了元对象。如果你没有指向实际对象实例的指针,但仍然想访问类的元对象,你可以使用 staticMetaObject 。
示例:
obj = QPushButton() obj.metaObject().className() # returns "QPushButton" QPushButton.staticMetaObject.className() # returns "QPushButton"
另请参阅
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
更改此对象及其子对象的线程关联,并在成功时返回
true
。如果对象有父对象,则无法移动。事件处理将继续在targetThread
中进行。要将对象移动到主线程,请使用 QApplication::instance() 获取当前应用程序的指针,然后使用 QApplication::thread() 获取应用程序所在的线程。例如:
myObject.moveToThread(QApplication.instance().thread())
如果
targetThread
是None
,那么此对象及其子对象的所有事件处理都将停止,因为它们不再与任何线程关联。请注意,对象的所有活动计时器将被重置。计时器首先在当前线程中停止,然后在
targetThread
中重新启动(使用相同的间隔)。因此,不断在线程之间移动对象可能会无限期地推迟计时器事件。在更改线程关联之前,会向此对象发送一个
ThreadChange
事件。您可以处理此事件以执行任何特殊处理。请注意,任何发布到此对象的新事件都将在targetThread
中处理,前提是它不是None
:当它是None
时,无法对此对象或其子对象进行事件处理,因为它们不再与任何线程关联。警告
此函数不是线程安全的;当前线程必须与当前线程亲和性相同。换句话说,此函数只能将对象从当前线程“推”到另一个线程,而不能将对象从任意线程“拉”到当前线程。然而,此规则有一个例外:没有线程亲和性的对象可以被“拉”到当前线程。
另请参阅
- objectName()¶
- Return type:
字符串
另请参阅
获取属性
objectNameᅟ
的Getter。- objectNameChanged(objectName)¶
- Parameters:
objectName – str
此信号在对象的名称更改后发出。新的对象名称作为
objectName
传递。另请参阅
属性
objectNameᅟ
的通知信号。返回指向父对象的指针。
另请参阅
- property(name)¶
- Parameters:
name – str
- Return type:
对象
返回对象的
name
属性的值。如果不存在这样的属性,返回的变体是无效的。
所有可用属性的信息通过
metaObject()
和dynamicPropertyNames()
提供。另请参阅
setProperty()
isValid()
metaObject()
dynamicPropertyNames()
- receivers(signal)¶
- Parameters:
signal – str
- Return type:
整数
警告
本节包含从C++自动翻译到Python的代码片段,可能包含错误。
返回连接到
signal
的接收器数量。由于槽和信号都可以用作信号的接收器,并且相同的连接可以多次建立,因此接收器的数量与此信号建立的连接数量相同。
调用此函数时,您可以使用
SIGNAL()
宏来传递特定信号:if receivers(SIGNAL(valueChanged(QByteArray))) > 0: data = QByteArray() get_the_value(data) # expensive operation valueChanged.emit(data)
从此对象中移除事件过滤器对象
obj
。如果未安装此类事件过滤器,则忽略该请求。当此对象被销毁时,此对象的所有事件过滤器将自动移除。
即使在事件过滤器激活期间(即从
eventFilter()
函数中),删除事件过滤器也始终是安全的。返回指向发送信号的对象的指针,如果在由信号激活的槽中调用;否则返回
None
。该指针仅在从该对象的线程上下文中调用此函数的槽执行期间有效。如果发送者被销毁,或者槽与发送者的信号断开连接,则此函数返回的指针将变为无效。
警告
此函数违反了面向对象的模块化原则。然而,当许多信号连接到单个槽时,获取发送者可能很有用。
- senderSignalIndex()¶
- Return type:
整数
返回调用当前正在执行的槽的信号的元方法索引,该槽是
sender()
返回的类的成员。如果在由信号激活的槽之外调用,则返回-1。对于具有默认参数的信号,此函数将始终返回包含所有参数的索引,无论使用哪个参数与
connect()
。例如,信号destroyed(QObject *obj = \nullptr)
将有两个不同的索引(带参数和不带参数),但此函数将始终返回带参数的索引。当使用不同参数重载信号时,这不适用。警告
此函数违反了面向对象的模块化原则。然而,当许多信号连接到单个槽时,获取信号索引可能很有用。
警告
当通过来自与此对象线程不同的线程的
DirectConnection
调用插槽时,此函数的返回值无效。不要在此类场景中使用此函数。- setObjectName(name)¶
- Parameters:
name – str
这是一个重载函数。
使对象成为
parent
的子对象。另请参阅
- setProperty(name, value)¶
- Parameters:
name – str
value – 对象
- Return type:
布尔
将对象的
name
属性的值设置为value
。如果属性在类中使用
Q_PROPERTY
定义,则成功时返回true,否则返回false。如果属性未使用Q_PROPERTY
定义,因此未在元对象中列出,则将其添加为动态属性并返回false。所有可用属性的信息通过
metaObject()
和dynamicPropertyNames()
提供。可以使用
property()
再次查询动态属性,并且可以通过将属性值设置为无效的QVariant
来移除动态属性。更改动态属性的值会导致QDynamicPropertyChangeEvent
被发送到对象。- signalsBlocked()¶
- Return type:
布尔
如果信号被阻塞,则返回
true
;否则返回false
。默认情况下,信号不会被阻塞。
- startTimer(interval[, timerType=Qt.CoarseTimer])¶
- Parameters:
interval – 整数
timerType –
TimerType
- Return type:
整数
这是一个重载函数,它将启动一个类型为
timerType
的计时器,并设置一个interval
毫秒的超时。这相当于调用:startTimer(std::chrono::milliseconds{interval}, timerType);
另请参阅
timerEvent()
killTimer()
QChronoTimer
QBasicTimer
返回对象所在的线程。
另请参阅
- timerEvent(event)¶
- Parameters:
事件 –
QTimerEvent
可以在子类中重新实现此事件处理程序以接收对象的计时器事件。
QChronoTimer
提供了更高级的接口来使用计时器功能,并且还提供了关于计时器的更一般信息。计时器事件通过event
参数传递。- tr(sourceText[, disambiguation=None[, n=-1]])¶
- Parameters:
sourceText – str
disambiguation – str
n – 整数
- Return type:
字符串