- class QObject#
QObject
类是所有 Qt 对象的基类。更多信息...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
,QAbstract3DGraph
,Q3DSurface
,Q3DScatter
,Q3DBars
,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
,QWebEngineHistory
,QWebEngineDownloadRequest
,QWebEngineContextMenuRequest
,QWebChannelAbstractTransport
,QWebChannel
,QUiLoader
,QTextToSpeechEngine
,QTextToSpeech
,QSignalSpy
,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
,QRemoteObjectReplica
,QRemoteObjectRegistry
,QRemoteObjectDynamicReplica
,QRemoteObjectPendingCallWatcher
,QRemoteObjectNode
,QRemoteObjectAbstractPersistedStore
,QRemoteObjectSettingsStore
,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
,QGeoPositionInfoSource
,QNmeaPositionInfoSource
,QGeoAreaMonitorSource
,QPdfPageRenderer
,QPdfPageNavigator
,QPdfDocument
,QOpenGLVertexArrayObject
,QOpenGLTimerQuery
,QOpenGLTimeMonitor
,QOpenGLShaderProgram
,QOpenGLShader
,QOpenGLDebugLogger
,QOpcUaProvider
,QOpcUaNode
,QOpcUaHistoryReadResponse
,QOpcUaGenericStructHandler
,QOpcUaClient
,QNearFieldTarget
,QNearFieldManager
,QAbstractOAuthReplyHandler
,QOAuthOobReplyHandler
,QRestAccessManager
,QNetworkInformation
,QNetworkCookieJar
,QNetworkAccessManager
,QLocalServer
,QHttpMultiPart
,QDtlsClientVerifier
,QDnsLookup
,QAbstractNetworkCache
,QNetworkDiskCache
,QWindowCapture
,QVideoSink
,QSoundEffect
,QScreenCapture
,QMediaRecorder
,QMediaDevices
,QMediaCaptureSession
,QImageCapture
,QCamera
,QAudioSource
,QAudioSink
,QAudioOutput
,QAudioInput
,QAudioDecoder
,QMqttSubscription
,QPlaceReply
,QPlaceSearchSuggestionReply
,QPlaceSearchReply
,QPlaceMatchReply
,QPlaceIdReply
,QPlaceDetailsReply
,QPlaceContentReply
,QPlaceManagerEngine
,QPlaceManager
,QGeoServiceProvider
,QGeoRoutingManagerEngine
,QGeoRoutingManager
,QGeoRouteReply
,QGeoCodingManagerEngine
,QGeoCodingManager
,QGeoCodeReply
,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
,QValue3DAxisFormatter
,QLogValue3DAxisFormatter
,QSeriesTheme
,QGraphTheme
,QCustom3DItem
,QCustom3DVolume
,QCustom3DLabel
,QBarSet
,QAbstractSeries
,QXYSeries
,QScatterSeries
,QLineSeries
,QAbstractBarSeries
,QBarSeries
,QAbstractDataProxy
,QSurfaceDataProxy
,QItemModelSurfaceDataProxy
,QHeightMapSurfaceDataProxy
,QScatterDataProxy
,QItemModelScatterDataProxy
,QBarDataProxy
,QItemModelBarDataProxy
,QAbstractAxis
,QValueAxis
,QBarCategoryAxis
,QAbstract3DSeries
,QSurface3DSeries
,QScatter3DSeries
,QBar3DSeries
,QAbstract3DInputHandler
,Q3DInputHandler
,QTouch3DInputHandler
,QAbstract3DAxis
,QValue3DAxis
,QCategory3DAxis
,Q3DTheme
,Q3DScene
,QExtensionManager
,QDesignerFormWindowToolInterface
,QDesignerFormWindowManagerInterface
,QDesignerFormEditorInterface
,QDBusVirtualObject
,QDBusServiceWatcher
,QDBusServer
,QDBusPendingCallWatcher
,QDBusAbstractInterfaceBase
,QDBusAbstractInterface
,QDBusInterface
,QDBusConnectionInterface
,QDBusAbstractAdaptor
,QTranslator
,QTimer
,QTimeLine
,QThreadPool
,QSocketNotifier
,QSignalMapper
,QSharedMemory
,QSettings
,QPluginLoader
,QMimeData
,QLibrary
,QItemSelectionModel
,QIODevice
,QSerialPort
,QNetworkReply
,QLocalSocket
,QAbstractSocket
,QUdpSocket
,QTcpSocket
,QWebSocketServer
,QOAuthHttpServerReplyHandler
,QTcpServer
,QSslServer
,QAbstractHttpServer
,QHttpServer
,QProcess
,QFutureWatcherBase
,QFutureWatcher
,QFileSystemWatcher
,QFileSelector
,QFileDevice
,QSaveFile
,QFile
,QTemporaryFile
,QEventLoop
,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
,QXYModelMapper
,QVXYModelMapper
,QStackedBarSeries
,QSplineSeries
,QPieSlice
,QPieSeries
,QPieModelMapper
,QVPieModelMapper
,QPercentBarSeries
,QLogValueAxis
,QLegendMarker
,QXYLegendMarker
,QPieLegendMarker
,QLegend
,QHorizontalStackedBarSeries
,QHorizontalPercentBarSeries
,QHorizontalBarSeries
,QHXYModelMapper
,QHPieModelMapper
,QDateTimeAxis
,QColorAxis
,QChartView
,QChart
,QPolarChart
,QCategoryAxis
,QCandlestickSet
,QCandlestickSeries
,QCandlestickModelMapper
,QVCandlestickModelMapper
,QHCandlestickModelMapper
,QCandlestickLegendMarker
,QBoxSet
,QBoxPlotSeries
,QBoxPlotModelMapper
,QVBoxPlotModelMapper
,QHBoxPlotModelMapper
,QBoxPlotLegendMarker
,QBarModelMapper
,QVBarModelMapper
,QHBarModelMapper
,QBarLegendMarker
,QAreaSeries
,QAreaLegendMarker
,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
,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
,QMorphTarget
,QClock
,QChannelMapper
,QAnimationGroup
,QAnimationController
,QAnimationAspect
,QAbstractClipBlendNode
,QLerpClipBlend
,QClipBlendValue
,QAdditiveClipBlend
,QAbstractClipAnimator
,QClipAnimator
,QBlendedClipAnimator
,QAbstractChannelMapping
,QSkeletonMapping
,QChannelMapping
,QAbstractAnimationClip
,QAnimationClipLoader
,QAnimationClip
,QAbstractAnimation
,QVertexBlendAnimation
,QMorphingAnimation
,QKeyframeAnimation
摘要
属性
objectNameᅟ
- 此对象的名称
方法
def
__init__()
def
blockSignals()
def
children()
def
connect()
def
disconnect()
def
dumpObjectInfo()
def
dumpObjectTree()
def
dynamicPropertyNames()
定义
emit()
定义
findChild()
定义
inherits()
定义
killTimer()
定义
objectName()
定义
parent()
定义
property()
定义
receivers()
定义
sender()
定义
setParent()
定义
startTimer()
定义
thread()
定义
tr()
虚方法#
定义
childEvent()
定义
event()
定义
metaObject()
定义
timerEvent()
插槽#
信号#
静态函数#
def
connect()
def
disconnect()
注意
本文档可能包含从C++自动转换为Python的代码片段。我们始终欢迎对代码片段翻译的贡献。如果您发现翻译问题,也可以通过在https:/bugreports.qt.io/projects/PYSIDE创建问题报告来告诉我们。
详细描述
黄豆类
QObject
(QObject)是Qt的对象模型的核心。在这个模型中,最核心的功能是一种强大的机制,称为信号和槽。您可以使用connect()
方法将信号连接到槽,并使用disconnect()
方法断开连接。为了避免无限循环的通知,您可以暂时使用blockSignals()
方法阻止信号。受保护的函数connectNotify()
和disconnectNotify()
使跟踪连接成为可能。QObjects以对象树的形式组织。当您使用另一个对象作为父对象创建一个
QObject
时,该对象将自动添加到父对象的children()
列表中。父对象拥有该对象;即,它会在其析构函数中自动删除其子对象。您可以使用findChild()
或findChildren()
方法按名称查找对象,并且可以选择类型。每个对象都有一个
objectName()
,并且可以通过相应的metaObject()
(参见className()
)找到其类名。您可以使用inherits()函数确定该对象的类是否从QObject
继承层次中继承。当对象被删除时,它会发出
destroyed()
信号。您可以捕获此信号,以避免对QA6对象的悬挂引用。QObjects可以通过
event()
接收事件并通过installEventFilter()
和eventFilter()
过滤其他对象的事件。详情请参阅childEvent()
,该方法可以被重写以捕获子对象事件。最后但同样重要的是,
QObject
为Qt提供了基本的定时器支持;有关定时器的高级支持,请参阅QTimer
。请注意,对于实现信号、槽或属性的任何对象,宏
Q_OBJECT
是必需的。您还需在源文件上运行元对象编译器。我们强烈建议在所有QObject
的子类中使用此宏,无论它们是否实际使用信号、槽和属性,因为不这样做可能会导致某些功能表现出奇特的行。所有Qt小部件都继承了
QObject
。方便函数isWidgetType()
返回一个对象是否实际上是一个小部件。它的速度比qobject_cast
<QWidget *>(obj)或obj->inherits
(“QWidget”)快得多。某些
QObject
函数,例如children()
,返回一个QObjectList
。`QObjectList
`是`QList
<`objc`QObject
>***`的别名。线程亲和度#
一个
QObject
实例被认为有一个线程亲和度,或者说它位于某个线程中。当一个QObject
收到一个queued signal
或一个posted event时,槽或事件处理器将在此对象所在的线程中运行。注意
如果一个
QObject
没有线程相关性(即thread()
返回零),或者它存在于没有运行事件循环的线程中,那么它无法接收队列信号或发布的事件。默认情况下,一个
QObject
存在于它被创建的线程中。可以使用thread()
查询对象的线程相关性,并使用moveToThread()
进行更改。所有QObjects必须存在于与它们的父对象相同的线程中。因此
如果两个涉及的QObjects存在于不同的线程中,
setParent()
将会失败。当一个
QObject
转移到另一个线程时,其所有子对象也会自动移动。如果
QObject
有一个父对象,moveToThread()
将失败。如果在
run()
中创建QObjects,它们不能成为QThread
对象的子对象,因为QThread
不存在于调用run()
的线程中。
注意
QObject
的成员变量不会自动成为它的子对象。父-child关系必须通过传递指向子对象构造函数的指针,或者通过调用setParent()
来设置。不进行此步骤,当调用moveToThread()
时,对象的成员变量将保留在旧线程中。没有拷贝构造函数或赋值运算符
QObject
没有复制构造函数和赋值运算符。这是设计上的考虑。实际上,尽管它们被声明了,但是在一个用宏Q_DISABLE_COPY()
标记的private
部分中。实际上,所有从QObject
派生来的 Qt 类(无论是直接还是间接)都使用这个宏来声明它们的复制构造函数和赋值运算符为私有的。关于这一点,在 QtQObject
页上的 Identity vs Value 对话中可以找到解释。主要后果是,在可能的情况下,你应该使用指向
QObject
(或您的QObject
子类)的指针,而不是使用您的QObject
子类作为值。例如,如果没有复制构造函数,就不能将QObject
的子类用作存储在一个容器类中的值。您必须存储指针。自动连接#
Qt 的元对象系统提供了一种机制来自动在
QObject
子类及其子类之间连接信号和槽。只要对象使用合适的对象名称定义,并且槽遵循简单的命名规则,就可以通过connectSlotsByName()
函数在运行时执行此连接。uic 生成的代码调用此函数,以在用 Qt Designer 创建的表单上执行自动连接。有关在 Qt Designer 中使用自动连接的更多信息,请参阅 Qt Designer 手册的“使用 Designer UI 文件”部分。
动态属性#
可以在运行时向和从
QObject
实例添加和删除动态属性。动态属性不需要在编译时声明,但仍提供与静态属性相同的优势,并且使用相同的 API 来操作 - 使用property()
读取它们和使用setProperty()
编写它们。Qt Designer 支持动态属性,并且标准 Qt 小部件以及用户创建的表单都可以具有动态属性。
国际化 (I18n)#
所有
QObject
子类都支持 Qt 的翻译功能,这使得将应用程序的用户界面翻译成不同的语言成为可能。要使用户可见的文本可翻译,必须将其包裹在对
tr()
函数的调用中。这在本指南中“编写可翻译的源代码”部分有详细说明。另见
QMetaObject
QPointer
QObjectCleanupHandler
Q_DISABLE_COPY()
ObjectTrees & Ownership注意
当使用
from __feature__ import true_property
时,可以直接使用属性;否则,通过访问器函数。- property objectNameᅟ: str#
警告
本节包含将从 C++ 自动转换为 Python 的代码片段,可能包含错误。
此属性持有此对象的名称。
您可以通过
findChild()
按名称(和类型)查找对象。您可以使用findChildren()
查找一组对象。qDebug("MyClass.setPrecision(): (%s) invalid precision %f", qPrintable(objectName()), newPrecision)
默认情况下,此属性包含一个空字符串。
构建一个具有父对象
parent
的对象。对象的父对象可以被视为对象的所有者。例如,一个对话框是其包含的“确定”和“取消”按钮的父对象。
父对象的析构函数将销毁所有子对象。
将
parent
设置为None
将构建一个没有父对象的对象。如果该对象是窗口小部件,它将成为顶级窗口。- blockSignals(b)#
- 参数:
b – bool
- 返回类型:
bool
如果
block
为真,则此对象发出的信号被阻止(即发出信号不会调用连接到它的任何内容)。如果block
为假,则不会发生此类阻塞。返回值是
signalsBlocked()
的上一个值。请注意,即使此对象的信号已被阻止,也会发出
destroyed()
信号。在阻止期间发出的信号不会被缓冲。
- childEvent(event)#
- 参数:
event –
QChildEvent
此事件处理程序可以在子类中重新实现以接收子事件。事件通过
event
参数传递。ChildAdded
和ChildRemoved
事件是在添加或删除子对象时发送给对象的。在两种情况下,您只能依赖子对象是一个QObject
,或者如果isWidgetType()
返回true
,则是一个 QWidget。(这是因为,在ChildAdded
的情况下,子对象尚未完全构建,而在ChildRemoved
的情况下,它可能已经被销毁)。ChildPolished
事件在子项被修饰或在修饰的子项被添加时发送给小部件。如果收到子项修饰事件,子项的构造通常已经完成。但是,这并不保证,在执行小部件构造函数期间可能会发送多个修饰事件。对于每个子部件,您将收到一个
ChildAdded
事件,零个或多个ChildPolished
事件,以及一个ChildRemoved
事件。如果子项在被添加后立即被移除,则省略
ChildPolished
事件。如果一个子项在构造和销毁过程中被修饰多次,您可能会为同一子项接收多个子项修饰事件,每次都有不同的虚拟表。另见
此函数返回子对象列表。
QObjectList
类在<QObject>
头文件中定义,如下所示第一个添加的子项是列表中的第一个对象,最后一个添加的子项是列表中的最后一个对象,即新子项被添加到列表的末尾。
请注意,当同级的 widgets 被提升或降低时,列表顺序会改变。被提升的 widget 成为列表中的最后一个对象,而被降低的 widget 成为列表中的第一个对象。
- connect(signal, receiver, method[, type=Qt.AutoConnection])#
- 参数:
signal – 字符串
receiver –
QObject
method – 字符串
type –
ConnectionType
- 返回类型:
连接
- connect(signal, functor[, type=Qt.AutoConnection])
- 参数:
signal – 字符串
functor –
PyCallable
type –
ConnectionType
- 返回类型:
连接
- connect(sender, signal, member[, type=Qt.AutoConnection])
- 参数:
sender –
QObject
signal – 字符串
member – 字符串
type –
ConnectionType
- 返回类型:
连接
此函数重载了
connect()
.将发送者对象的
signal
连接到此对象的method
.相当于
connect(sender, signal, this, method, type)
每次建立的连接都会发出一个信号,因此重复连接会发出两个信号。您可以使用
disconnect()
断开连接。另见
- static connect(sender, signal, receiver, member[, type=Qt.AutoConnection])
- 参数:
sender –
QObject
signal – 字符串
receiver –
QObject
member – 字符串
type –
ConnectionType
- 返回类型:
连接
警告
本节包含将从 C++ 自动转换为 Python 的代码片段,可能包含错误。
从发送者对象的
signal
创建到接收者对象method
的给定type
连接。返回连接句柄,可用于稍后断开连接。指定信号和方法时,必须使用
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
的存在,或者它们的签名字符不一致,则连接句柄将无效。您可以将其强制转换为 bool 类型来检查是否存在。默认情况下,每建立一次连接都会发出一个信号;重复连接则会发出两个信号。您可以通过单次调用
disconnect()
调用以断开所有这些连接。如果您传入UniqueConnection
类型,则只有在它不是重复的时才会建立连接。如果已存在重复(同一对象上的完全相同的信号和槽),则连接将失败,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()
之间的差异、基于 String 的和基于 Functor 的 连接之间的区别。- static connect(sender, signal, context, functor[, type=Qt.AutoConnection])
- 参数:
sender –
QObject
signal – 字符串
context –
QObject
functor –
PyCallable
type –
ConnectionType
- 返回类型:
连接
- static connect(sender, signal, functor[, type=Qt.AutoConnection])
- 参数:
sender –
QObject
signal – 字符串
functor –
PyCallable
type –
ConnectionType
- 返回类型:
连接
- static connect(sender, signal, receiver, method[, type=Qt.AutoConnection])
- 参数:
sender –
QObject
信号 –
QMetaMethod
receiver –
QObject
方法 –
QMetaMethod
type –
ConnectionType
- 返回类型:
连接
从发送者对象的
signal
创建到接收者对象method
的给定type
连接。返回连接句柄,可用于稍后断开连接。如果无法创建连接,例如参数无效,则连接句柄将无效。您可以通过将其断言为布尔值来检查
Connection
是否有效。此函数与
connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
的工作方式相同,但它使用QMetaMethod
来指定信号和方法。另见
ConnectionType type)
- connectNotify(signal)#
- 参数:
信号 –
QMetaMethod
警告
本节包含将从 C++ 自动转换为 Python 的代码片段,可能包含错误。
当此对象中的
signal
连接到某个项时,将调用此虚拟函数。如果您想将
signal
与特定信号进行比较,可以按以下方式使用fromSignal()
if signal == QMetaMethod.fromSignal(MyObject.valueChanged): # signal is valueChanged
警告
此函数违反了面向对象的原则——模块化。但是,如果需要在连接到信号时仅执行昂贵的初始化,它可能很有用。
警告
此函数从执行连接的线程中调用,这可能与对象所在的线程不同。此函数也可能在
QObject
内部互斥锁锁定的情况下调用。因此,不允许从您的重新实现中重新进入任何QObject
函数,包括isSignalConnected()
。如果您的重新实现中锁定了一个互斥锁,请确保不要在该互斥锁被持有的其他地方调用QObject
函数,否则会导致死锁。此事件处理程序可以在子类中重新实现以接收自定义事件。自定义事件是用户定义的事件,其类型值至少与枚举
Type
中的User
项一样大,通常是一个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)#
- 参数:
connection –
Connection
- 返回类型:
bool
断开连接。
如果
connection
无效或已被断开,则不执行任何操作,并返回false。另见
- disconnect(signal, receiver, member)
- 参数:
signal – 字符串
receiver –
QObject
member – 字符串
- 返回类型:
bool
此函数覆盖了
disconnect()
。从接收器的
method
中断开signal
。当涉及的对象之一被销毁时,信号-槽连接将被移除。
注意
断开所有信号-槽连接还会断开
destroyed()
信号(如果它已被连接)。这样做可能会对依赖于此信号进行资源清理的类产生不利影响。建议仅断开应用程序代码连接的特定信号。- disconnect(signal, functor)
- 参数:
signal – 字符串
functor –
PyCallable
- 返回类型:
bool
- static disconnect(sender, signal, receiver, member)
警告
本节包含将从 C++ 自动转换为 Python 的代码片段,可能包含错误。
从对象
sender
的对象中移除signal
在对象receiver
中的method
。如果连接成功断开,则返回true
;否则返回false
。当涉及的对象之一被销毁时,信号-槽连接将被移除。
断开操作一般有三种方式,如下面的示例所示。
断开对象信号的所有连接
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)
在代码中,《None》可作为通配符使用,分别表示“任何信号”、“任何接收对象”或“接收对象中的任何槽”。
sender
必须不能是《None》。 (您不能在单个调用中从多个对象断开信号。)如果
signal
是《None》,它将使receiver
如果
receiver
是《None》,它将使任何与signal
连接的内容断开。如果不是,则不会断开除了receiver
如果
method
是《None》,它将使任何与receiver
连接的内容断开连接。如果不如此,则只有名称为method
的槽将断开连接,其他所有的槽将保持不变。如果省略receiver
,则method
- static disconnect(sender, signal, functor)
- 参数:
sender –
QObject
signal – 字符串
functor –
PyCallable
- 返回类型:
bool
- static disconnect(sender, signal, receiver, member)
- 参数:
sender –
QObject
信号 –
QMetaMethod
receiver –
QObject
成员 -
QMetaMethod
- 返回类型:
bool
从对象
sender
的对象中移除signal
在对象receiver
中的method
。如果连接成功断开,则返回true
;否则返回false
。此函数提供了与
disconnect(const QObject *sender, const char *, signal, const QObject *receiver, const char *method)
相同的可能性,但使用此外,如果以下条件之一成立,则此函数返回
false
并且没有任何信号和槽会被断开:信号不是发送者类或其父类的一个成员。
方法不是接收者类或其父类的一个成员。
信号实例不表示一个信号。
QMetaMethod
()可以作为通配符使用,表示“任何信号”或“接收对象中的任何槽”。同样地,对于receiver
,《None》也可以用来表示“任何接收对象”。在这种情况下,方法应该是QMetaMethod
。参数注意
断开所有信号-槽连接还会断开
destroyed()
信号(如果它已被连接)。这样做可能会对依赖于此信号进行资源清理的类产生不利影响。建议仅断开应用程序代码连接的特定信号。另见
disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *method)
- disconnect(receiver[, member=None])
- 参数:
receiver –
QObject
member – 字符串
- 返回类型:
bool
此函数覆盖了
disconnect()
。断开此对象的所有信号与
receiver
的method
的连接。当涉及的对象之一被销毁时,信号-槽连接将被移除。
- disconnectNotify(signal)#
- 参数:
信号 –
QMetaMethod
当此对象中的某个信号被断开连接时,将调用此虚函数。
查阅
connectNotify()
了解如何将信号与特定信号进行比较的示例。如果此对象的所有信号都已断开连接(例如,
disconnect()
的信号参数为None
),则disconnectNotify
只调用一次,并且signal
将是一个无效的QMetaMethod
(isValid()
返回false
)。警告
此函数违反了面向对象模块化的原则。然而,它可能有助于优化对昂贵资源的访问。
警告
此函数在执行断开连接操作的线程中被调用,这可能与该对象所在的线程不同。此函数还可能在该对象的内部互斥锁被锁定时调用。因此,不允许从你的重实现中重新进入任何
QObject
函数,包括isSignalConnected()
。如果你在重实现中锁定互斥锁,请确保不要在其他地方携带此互斥锁调用QObject
函数,否则可能会导致死锁。- dumpObjectInfo()#
将此对象关于信号连接等信息输出到调试输出。
- dumpObjectTree()#
将子对象的树形结构输出到调试输出。
- dynamicPropertyNames()#
- 返回类型:
QByteArray对象的列表
返回使用
setProperty()
动态添加到对象的所有属性名称。- emit(arg__1, arg__2)#
- 参数:
arg__1 – 字符串
arg__2 –
- 返回类型:
bool
警告
本节包含将从 C++ 自动转换为 Python 的代码片段,可能包含错误。
这个虚拟函数接收对象的events,并且如果对象识别并处理了事件
e
,则返回true。可以在 reimplement 事件() 函数来自定义对象的行为。
确保对于你未处理的所有事件,都调用父事件类的实现。
示例
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
对象的事件过滤器,则过滤事件。在您的函数 reimplement 中,如果您想过滤
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() 函数,因为基类可能已经 reimplement 事件Filter() 以其自身内部用途。
某些事件,如
ShortcutOverride
,必须显式接受(通过在它们上调用accept()
)以防止传播。- findChild(type[, name={}[, options=Qt.FindChildrenRecursively]])#
- 参数:
type –
PyTypeObject
name – 字符串
options –
FindChildOption
组合
- 返回类型:
对象
要查找一定类型的 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])#
- 参数:
type –
PyTypeObject
pattern –
QRegularExpression
options –
FindChildOption
组合
- 返回类型:
Py序列
- findChildren(type[, name={}[, options=Qt.FindChildrenRecursively]])
- 参数:
type –
PyTypeObject
name – 字符串
options –
FindChildOption
组合
- 返回类型:
Py序列
与 findChild 方法类似,第一个参数应该是子对象的类型。
- inherits(classname)#
- 参数:
classname – 字符串
- 返回类型:
bool
警告
本节包含将从 C++ 自动转换为 Python 的代码片段,可能包含错误。
如果此对象是一个继承自
className
的类的实例,或者是一个继承自QObject
并继承自className
的子类的实例,则返回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
<Type *>(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()#
- 返回类型:
bool
如果对象是 QQuickItem,则返回
true
;否则返回false
。调用此函数相当于调用
inherits("QQuickItem")
,但其速度更快。- isSignalConnected(signal)#
- 参数:
信号 –
QMetaMethod
- 返回类型:
bool
警告
本节包含将从 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()#
- 返回类型:
bool
如果对象是小部件,则返回
true
;否则返回false
。调用此函数等同于调用
inherits("QWidget")
,但速度更快。- isWindowType()#
- 返回类型:
bool
如果对象是窗口,则返回
true
;否则返回false
。调用此函数等同于调用
inherits("QWindow")
,但速度更快。- killTimer(id)#
- 参数:
id – int
通过定时器标识符
id
终止定时器。当一个定时器事件开始时,定时器标识符由
startTimer()
返回。- metaObject()#
- 返回类型:
警告
本节包含将从 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
,则将在此对象上投放的所有新事件将在targetThread
中处理:当它是None
时,此对象或其子对象的事件处理都不会发生,因为它们已不再与任何线程相关联。警告
这个函数不是线程安全的;当前线程必须与当前线程亲和度相同。换句话说,这个函数只能“推送”对象从当前线程到另一个线程,不能从任何任意线程“拉取”对象到当前线程。不过,有一个例外:没有线程亲和度的对象可以被“拉取”到当前线程。
另见
- objectName()#
- 返回类型:
字符串
objectNameᅟ
属性的获取器。- objectNameChanged(objectName)#
- 参数:
objectName – 字符串
当对象名称被更改后,将发出此信号。新对象名称作为
objectName
传递。另见
objectNameᅟ
属性的通告信号。返回指向父对象的指针。
- property(name)#
- 参数:
name – 字符串
- 返回类型:
对象
返回对象名称属性
name
的值。如果不存在这样的属性,返回的可变对象将无效。
所有可用属性的详细信息可通过
metaObject()
和dynamicPropertyNames()
获取。另见
setProperty()
isValid()
metaObject()
dynamicPropertyNames()
- receivers(signal)#
- 参数:
signal – 字符串
- 返回类型:
int
警告
本节包含将从 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()#
- 返回类型:
int
返回正在执行槽的信号的元方法索引,该信号是
sender()
返回的类的成员。如果调用时未在由信号激活的槽中,则返回 -1。对于默认参数的信号,此函数将始终返回所有参数的索引,而不管哪个被
connect()
使用。例如,信号destroyed(QObject *obj = \nullptr)
将有两个不同的索引(有与没有参数的),但此函数将始终返回有参数的索引。在信号重载具有不同参数的情况下不适用。警告
此函数违反了面向对象的模块化原则。但是,当许多信号连接到单个槽时,获取信号索引可能很有用。
警告
当通过来自与该对象线程不同的线程的
DirectConnection
从槽调用时,此函数的返回值是无效的。在这种情况下不要使用此函数。- setObjectName(name)#
- 参数:
name – 字符串
这是一个重载函数。
将对象设置为
parent
的子对象。- setProperty(name, value)#
- 参数:
name – 字符串
值 – 对象
- 返回类型:
bool
将对象的
name
属性的值设为value
。如果该属性在类中使用了
Q_PROPERTY
定义,则成功时返回真,否则返回假。如果该属性没有使用Q_PROPERTY
定义,因此没有列出在元对象中,它将作为一个动态属性添加,并返回假。所有可用属性的详细信息可通过
metaObject()
和dynamicPropertyNames()
获取。动态属性可以使用
property()
重新查询,并且可以通过将属性值设置为非法的QVariant
来移除。更改动态属性的值将导致向对象发送一个QDynamicPropertyChangeEvent
。- signalsBlocked()#
- 返回类型:
bool
如果信号被阻塞返回
true
,否则返回false
。默认情况下,信号不会被阻塞。
这是一个重载函数,它将启动一个类型为
timerType
、超时时间为interval
毫秒的计时器。这相当于调用startTimer(std::chrono::milliseconds{interval}, timerType);
返回对象所在的线程。
- timerEvent(event)#
- 参数:
event –
QTimerEvent
此事件处理器可以在子类中重写,以获取对象的计时器事件。
QTimer
为计时器功能提供更高级别的接口,并提供有关计时器的更多信息。计时器事件通过event
参数传递。- tr(sourceText[, disambiguation=None[, n=-1]])#
- 参数:
sourceText – str
disambiguation – str
n – int
- 返回类型:
字符串