PySide6.QtCore.QObject

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, 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

概要

属性

方法

虚拟方法

插槽

信号

静态函数

注意

本文档可能包含从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(),返回一个 QObjectListQObjectListQList < QObject *> 的 typedef。

线程亲和性

一个QObject实例被称为具有线程亲和性,或者说它存在于某个线程中。当一个QObject接收到一个queued signal或一个posted event时,槽或事件处理程序将在该对象所在的线程中运行。

注意

如果一个QObject没有线程关联(也就是说,如果thread()返回零),或者它所在的线程没有运行的事件循环,那么它就不能接收队列信号或发布的事件。

默认情况下,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)

默认情况下,此属性包含一个空字符串。

另请参阅

metaObject() className()

Access functions:
__init__([parent=None])
Parameters:

父对象QObject

构造一个具有父对象 parent 的对象。

对象的父对象可以被视为对象的所有者。例如,对话框是其包含的“确定”和“取消”按钮的父对象。

父对象的析构函数会销毁所有子对象。

parent设置为None会构造一个没有父对象的对象。如果该对象是一个小部件,它将成为顶层窗口。

blockSignals(b)
Parameters:

b – 布尔值

Return type:

布尔

如果 block 为 true,则此对象发出的信号将被阻塞(即,发出信号不会调用与其连接的任何内容)。如果 block 为 false,则不会发生此类阻塞。

返回值是signalsBlocked()的先前值。

请注意,即使此对象的信号已被阻止,destroyed()信号仍将被发出。

在被阻塞时发出的信号不会被缓冲。

childEvent(event)
Parameters:

事件QChildEvent

此事件处理程序可以在子类中重新实现以接收子事件。事件通过event参数传递。

ChildAddedChildRemoved 事件在子对象被添加或移除时发送给对象。在这两种情况下,你只能依赖子对象是一个 QObject,或者如果 isWidgetType() 返回 true,则是一个 QWidget。(这是因为在 ChildAdded 的情况下,子对象尚未完全构造,而在 ChildRemoved 的情况下,它可能已经被销毁了)。

ChildPolished 事件在子部件被优化或添加优化子部件时发送给部件。如果你接收到一个子部件优化事件,通常意味着子部件的构造已经完成。然而,这并不保证,并且在部件构造函数的执行过程中可能会传递多个优化事件。

对于每个子部件,您会收到一个ChildAdded事件,零个或多个ChildPolished事件,以及一个ChildRemoved事件。

如果子元素在添加后立即被移除,则省略ChildPolished事件。如果子元素在构造和销毁过程中被多次处理,你可能会收到同一个子元素的多个子元素处理事件,每次都有不同的虚拟表。

另请参阅

event()

children()
Return type:

QObject的列表

返回一个子对象列表。QObjectList 类在 头文件中定义如下:

第一个添加的子项是列表中的first对象,最后一个添加的子项是列表中的last对象,即新的子项被追加到末尾。

请注意,当QWidget子控件被提升或降低时,列表顺序会发生变化。被提升的控件将成为列表中的最后一个对象,而被降低的控件将成为列表中的第一个对象。

connect(signal, functor[, type=Qt.AutoConnection])
Parameters:
Return type:

Connection

static connect(sender, signal, functor[, type=Qt.AutoConnection])
Parameters:
Return type:

Connection

connect(sender, signal, member[, type=Qt.AutoConnection])
Parameters:
Return type:

Connection

此函数重载了 connect()

将来自sender对象的signal连接到此对象的method

等同于 connect(sender, signal, this, method, type)。

每次建立的连接都会发出一个信号,因此重复的连接会发出两个信号。你可以使用disconnect()来断开连接。

另请参阅

disconnect()

connect(signal, receiver, method[, type=Qt.AutoConnection])
Parameters:
Return type:

Connection

static connect(sender, signal, receiver, method[, type=Qt.AutoConnection])
Parameters:
Return type:

Connection

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:
Return type:

Connection

static connect(sender, signal, receiver, member[, type=Qt.AutoConnection])
Parameters:
Return type:

Connection

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

sender对象中的signal创建一个给定type的连接,连接到receiver对象中的method。返回一个可用于稍后断开连接的句柄。

在指定signalmethod时,必须使用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无法验证signalmethod的存在,或者它们的签名不兼容,则连接句柄将无效。您可以通过将其转换为布尔值来检查句柄是否有效。

默认情况下,每次建立连接时都会发出一个信号;对于重复的连接会发出两个信号。你可以通过一次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函数,否则会导致死锁。

customEvent(event)
Parameters:

事件QEvent

此事件处理程序可以在子类中重新实现以接收自定义事件。自定义事件是用户定义的事件,其类型值至少与User枚举的Type项一样大,并且通常是QEvent的子类。事件通过event参数传递。

另请参阅

event() QEvent

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

destroyed([obj=None])
Parameters:

objQObject

此信号在对象 obj 被销毁之前立即发出,在所有 QPointer 实例被通知之后,并且不能被阻止。

所有对象的子对象在此信号发出后立即被销毁。

另请参阅

deleteLater() QPointer

static disconnect(connection)
Parameters:

连接Connection

Return type:

布尔

断开连接。

如果connection无效或已经断开连接,则不做任何操作并返回false。

另请参阅

connect()

disconnect(receiver[, member=None])
Parameters:
  • receiverQObject

  • member – str

Return type:

布尔

此函数重载了 disconnect()

断开此对象中所有信号与receivermethod的连接。

注意

connect()和相应的disconnect()调用中,使用相同的语法,即指向成员函数的指针或基于字符串的语法,使用SIGNALSLOT宏。

为了避免不匹配,存储由connect()返回的连接句柄,并在调用disconnect()时使用它。

注意

如果一个queued connection断开连接,已经安排的事件可能仍然会被传递,导致接收者在连接断开后被调用。

当涉及的对象中的任何一个被销毁时,信号-槽连接将被移除。

disconnect(signal, functor)
Parameters:
  • signal – str

  • 函子PyCallable

Return type:

布尔

static disconnect(sender, signal, functor)
Parameters:
  • senderQObject

  • signal – str

  • 函子PyCallable

Return type:

布尔

disconnect(signal, receiver, member)
Parameters:
  • signal – str

  • receiverQObject

  • member – str

Return type:

布尔

此函数重载了 disconnect()

断开signalreceivermethod的连接。

注意

connect()和相应的disconnect()调用中,使用相同的语法,即指向成员函数的指针或基于字符串的语法,使用SIGNALSLOT宏。

为了避免不匹配,存储由connect()返回的连接句柄,并在调用disconnect()时使用它。

注意

如果一个queued connection断开连接,已经安排的事件可能仍然会被传递,导致接收者在连接断开后被调用。

当涉及的对象中的任何一个被销毁时,信号-槽连接将被移除。

注意

断开所有信号-槽连接也会断开destroyed()信号(如果已连接)。这样做可能会对依赖此信号进行资源清理的类产生不利影响。建议仅断开由应用程序代码连接的特定信号。

static disconnect(sender, signal, receiver, member)
Parameters:
Return type:

布尔

断开对象 sender 中的 signal 与对象 receiver 中的 method 的连接。如果连接成功断开,则返回 true;否则返回 false

此函数提供了与disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *method)相同的功能,但使用QMetaMethod来表示要断开连接的信号和方法。

此外,如果满足以下条件,此函数将返回 false 并且不会断开任何信号和槽:

  1. signal 不是发送者类或其父类的成员。

  2. method 不是接收者类或其父类之一的成员。

  3. signal 实例不代表信号。

注意

connect()和相应的disconnect()调用中,使用相同的语法,即指向成员函数的指针或基于字符串的语法,使用SIGNALSLOT宏。

为了避免不匹配,存储由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)
Parameters:
  • senderQObject

  • signal – str

  • receiverQObject

  • member – str

Return type:

布尔

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

断开对象 sender 中的 signal 与对象 receiver 中的 method 的连接。如果连接成功断开,则返回 true;否则返回 false

当涉及的对象中的任何一个被销毁时,信号-槽连接将被移除。

disconnect() 通常以三种方式使用,如下例所示。

  1. 断开与对象信号连接的所有内容:

    disconnect(myObject, None, None, None)
    

    等同于非静态重载函数

    myObject.disconnect()
    
  2. 断开与特定信号连接的所有内容:

    disconnect(myObject, SIGNAL(mySignal()), None, None)
    

    等同于非静态重载函数

    myObject.disconnect(SIGNAL(mySignal()))
    
  3. 断开特定接收器:

    disconnect(myObject, None, myReceiver, None)
    

    等同于非静态重载函数

    myObject.disconnect(myReceiver)
    

注意

connect()和相应的disconnect()调用中,使用相同的语法,即指向成员函数的指针或基于字符串的语法,使用SIGNALSLOT宏。

为了避免不匹配,存储由connect()返回的连接句柄,并在调用disconnect()时使用它。

注意

如果一个queued connection断开连接,已经安排的事件可能仍然会被传递,导致接收者在连接断开后被调用。

None 可以用作通配符,分别表示“任何信号”、“任何接收对象”或“接收对象中的任何槽”。

sender 可能永远不会是 None。(你不能在一次调用中断开多个对象的信号。)

如果 signalNone,它会断开 receivermethod 与任何信号的连接。如果不是,则只断开指定的信号。

如果 receiverNone,它会断开与 signal 连接的任何内容。如果不是,则不会断开 receiver 以外的对象中的插槽。

如果 methodNone,它会断开连接到 receiver 的任何内容。如果不是,只有名为 method 的槽会被断开,其他槽则保持不变。如果省略 receiver,则 method 必须为 None,因此您无法在所有对象上断开特定名称的槽。

注意

断开所有信号-槽连接也会断开destroyed()信号(如果已连接)。这样做可能会对依赖此信号进行资源清理的类产生不利影响。建议仅断开由应用程序代码连接的特定信号。

另请参阅

connect()

disconnectNotify(signal)
Parameters:

信号QMetaMethod

当某些东西从这个对象中的signal断开连接时,会调用此虚拟函数。

请参阅connectNotify()以了解如何将signal与特定信号进行比较的示例。

如果所有信号都与此对象断开连接(例如,disconnect()的信号参数为None),则disconnectNotify()仅被调用一次,且signal将是一个无效的QMetaMethodisValid()返回false)。

警告

此函数违反了面向对象的模块化原则。然而,它可能对优化访问昂贵资源有用。

警告

此函数由执行断开连接的线程调用,该线程可能与对象所在的线程不同。此函数也可能在QObject内部互斥锁锁定的情况下调用。因此,不允许在重新实现中重新进入任何QObject函数,包括isSignalConnected()。如果在重新实现中锁定互斥锁,请确保不要在其他地方持有该互斥锁的情况下调用QObject函数,否则会导致死锁。

dumpObjectInfo()

将此对象的信号连接等信息转储到调试输出中。

注意

在 Qt 5.9 之前,此函数不是 const。

另请参阅

dumpObjectTree()

dumpObjectTree()

将子节点的树转储到调试输出。

注意

在Qt 5.9之前,此函数不是const。

另请参阅

dumpObjectInfo()

dynamicPropertyNames()
Return type:

.list of QByteArray

返回使用setProperty()动态添加到对象的所有属性的名称。

emit(signal, arg__2)
Parameters:
  • signal – str

  • arg__2

Return type:

布尔

event(event)
Parameters:

事件QEvent

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)
eventFilter(watched, event)
Parameters:
Return type:

布尔

警告

本节包含从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())以防止传播。

警告

如果在此函数中删除接收者对象,请确保返回 true。否则,Qt 会将事件转发给已删除的对象,程序可能会崩溃。

另请参阅

installEventFilter()

findChild(type[, name={}[, options=Qt.FindChildrenRecursively]])
Parameters:
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:
Return type:

PySequence

findChildren(type[, name={}[, options=Qt.FindChildrenRecursively]])
Parameters:
Return type:

PySequence

findChild方法类似,第一个参数应为子项的类型。

inherits(classname)
Parameters:

classname – str

Return type:

布尔

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

如果此对象是继承className的类的实例,或者是继承classNameQObject子类的实例,则返回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()

installEventFilter(filterObj)
Parameters:

filterObjQObject

警告

本节包含从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:

idTimerId

这是一个重载函数。

killTimer(id)
Parameters:

id – int

终止具有计时器标识符的计时器,id

定时器标识符由startTimer()在启动定时器事件时返回。

另请参阅

timerEvent() startTimer()

metaObject()
Return type:

QMetaObject

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

返回指向此对象的元对象的指针。

元对象包含有关继承QObject的类的信息,例如类名、超类名、属性、信号和槽。每个包含Q_OBJECT宏的QObject子类都将有一个元对象。

元对象信息是信号/槽连接机制和属性系统所必需的。inherits() 函数也使用了元对象。

如果你没有指向实际对象实例的指针,但仍然想访问类的元对象,你可以使用 staticMetaObject

示例:

obj = QPushButton()
obj.metaObject().className() # returns "QPushButton"
QPushButton.staticMetaObject.className() # returns "QPushButton"

另请参阅

staticMetaObject

moveToThread(thread)
Parameters:

线程QThread

Return type:

布尔

警告

本节包含从C++自动翻译到Python的代码片段,可能包含错误。

更改此对象及其子对象的线程关联,并在成功时返回true。如果对象有父对象,则无法移动。事件处理将继续在targetThread中进行。

要将对象移动到主线程,请使用 QApplication::instance() 获取当前应用程序的指针,然后使用 QApplication::thread() 获取应用程序所在的线程。例如:

myObject.moveToThread(QApplication.instance().thread())

如果 targetThreadNone,那么此对象及其子对象的所有事件处理都将停止,因为它们不再与任何线程关联。

请注意,对象的所有活动计时器将被重置。计时器首先在当前线程中停止,然后在targetThread中重新启动(使用相同的间隔)。因此,不断在线程之间移动对象可能会无限期地推迟计时器事件。

在更改线程关联之前,会向此对象发送一个ThreadChange事件。您可以处理此事件以执行任何特殊处理。请注意,任何发布到此对象的新事件都将在targetThread中处理,前提是它不是None:当它是None时,无法对此对象或其子对象进行事件处理,因为它们不再与任何线程关联。

警告

此函数不是线程安全的;当前线程必须与当前线程亲和性相同。换句话说,此函数只能将对象从当前线程“推”到另一个线程,而不能将对象从任意线程“拉”到当前线程。然而,此规则有一个例外:没有线程亲和性的对象可以被“拉”到当前线程。

另请参阅

thread()

objectName()
Return type:

字符串

另请参阅

setObjectName()

获取属性 objectNameᅟ 的Getter。

objectNameChanged(objectName)
Parameters:

objectName – str

此信号在对象的名称更改后发出。新的对象名称作为 objectName 传递。

另请参阅

objectName

属性 objectNameᅟ 的通知信号。

parent()
Return type:

QObject

返回指向父对象的指针。

另请参阅

setParent() children()

property(name)
Parameters:

name – str

Return type:

对象

返回对象的name属性的值。

如果不存在这样的属性,返回的变体是无效的。

所有可用属性的信息通过 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)

警告

此函数违反了面向对象的模块化原则。然而,当您需要在某些东西连接到信号时执行昂贵的初始化时,它可能很有用。

另请参阅

isSignalConnected()

removeEventFilter(obj)
Parameters:

objQObject

从此对象中移除事件过滤器对象 obj。如果未安装此类事件过滤器,则忽略该请求。

当此对象被销毁时,此对象的所有事件过滤器将自动移除。

即使在事件过滤器激活期间(即从eventFilter()函数中),删除事件过滤器也始终是安全的。

sender()
Return type:

QObject

返回指向发送信号的对象的指针,如果在由信号激活的槽中调用;否则返回None。该指针仅在从该对象的线程上下文中调用此函数的槽执行期间有效。

如果发送者被销毁,或者槽与发送者的信号断开连接,则此函数返回的指针将变为无效。

警告

此函数违反了面向对象的模块化原则。然而,当许多信号连接到单个槽时,获取发送者可能很有用。

警告

如上所述,当通过来自与此对象线程不同的线程的DirectConnection调用插槽时,此函数的返回值无效。不要在此类场景中使用此函数。

另请参阅

senderSignalIndex()

senderSignalIndex()
Return type:

整数

返回调用当前正在执行的槽的信号的元方法索引,该槽是sender()返回的类的成员。如果在由信号激活的槽之外调用,则返回-1。

对于具有默认参数的信号,此函数将始终返回包含所有参数的索引,无论使用哪个参数与connect()。例如,信号destroyed(QObject *obj = \nullptr)将有两个不同的索引(带参数和不带参数),但此函数将始终返回带参数的索引。当使用不同参数重载信号时,这不适用。

警告

此函数违反了面向对象的模块化原则。然而,当许多信号连接到单个槽时,获取信号索引可能很有用。

警告

当通过来自与此对象线程不同的线程的DirectConnection调用插槽时,此函数的返回值无效。不要在此类场景中使用此函数。

setObjectName(name)
Parameters:

name – str

这是一个重载函数。

setParent(parent)
Parameters:

父对象QObject

使对象成为parent的子对象。

另请参阅

parent() children()

setProperty(name, value)
Parameters:
  • name – str

  • value – 对象

Return type:

布尔

将对象的name属性的值设置为value

如果属性在类中使用Q_PROPERTY定义,则成功时返回true,否则返回false。如果属性未使用Q_PROPERTY定义,因此未在元对象中列出,则将其添加为动态属性并返回false。

所有可用属性的信息通过 metaObject()dynamicPropertyNames() 提供。

可以使用property()再次查询动态属性,并且可以通过将属性值设置为无效的QVariant来移除动态属性。更改动态属性的值会导致QDynamicPropertyChangeEvent被发送到对象。

注意

以“_q_”开头的动态属性保留用于内部目的。

signalsBlocked()
Return type:

布尔

如果信号被阻塞,则返回 true;否则返回 false

默认情况下,信号不会被阻塞。

startTimer(interval[, timerType=Qt.CoarseTimer])
Parameters:
  • interval – 整数

  • timerTypeTimerType

Return type:

整数

这是一个重载函数,它将启动一个类型为 timerType 的计时器,并设置一个 interval 毫秒的超时。这相当于调用:

startTimer(std::chrono::milliseconds{interval}, timerType);

另请参阅

timerEvent() killTimer() QChronoTimer QBasicTimer

thread()
Return type:

QThread

返回对象所在的线程。

另请参阅

moveToThread()

timerEvent(event)
Parameters:

事件QTimerEvent

可以在子类中重新实现此事件处理程序以接收对象的计时器事件。

QChronoTimer 提供了更高级的接口来使用计时器功能,并且还提供了关于计时器的更一般信息。计时器事件通过 event 参数传递。

tr(sourceText[, disambiguation=None[, n=-1]])
Parameters:
  • sourceText – str

  • disambiguation – str

  • n – 整数

Return type:

字符串