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 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 类(无论是直接还是间接)都使用这个宏来声明它们的复制构造函数和赋值运算符为私有的。关于这一点,在 Qt QObject 页上的 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)

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

访问函数
__init__([parent=None])#
参数:

parentQObject

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

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

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

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

blockSignals(b)#
参数:

b – bool

返回类型:

bool

如果 block 为真,则此对象发出的信号被阻止(即发出信号不会调用连接到它的任何内容)。如果 block 为假,则不会发生此类阻塞。

返回值是 signalsBlocked() 的上一个值。

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

在阻止期间发出的信号不会被缓冲。

childEvent(event)#
参数:

eventQChildEvent

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

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

ChildPolished 事件在子项被修饰或在修饰的子项被添加时发送给小部件。如果收到子项修饰事件,子项的构造通常已经完成。但是,这并不保证,在执行小部件构造函数期间可能会发送多个修饰事件。

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

如果子项在被添加后立即被移除,则省略 ChildPolished 事件。如果一个子项在构造和销毁过程中被修饰多次,您可能会为同一子项接收多个子项修饰事件,每次都有不同的虚拟表。

另见

event()

children()#
返回类型:

. QObject 列表

此函数返回子对象列表。QObjectList 类在 <QObject> 头文件中定义,如下所示

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

请注意,当同级的 widgets 被提升或降低时,列表顺序会改变。被提升的 widget 成为列表中的最后一个对象,而被降低的 widget 成为列表中的第一个对象。

connect(signal, receiver, method[, type=Qt.AutoConnection])#
参数:
返回类型:

连接

connect(signal, functor[, type=Qt.AutoConnection])
参数:
返回类型:

连接

connect(sender, signal, member[, type=Qt.AutoConnection])
参数:
返回类型:

连接

此函数重载了 connect() .

将发送者对象的 signal 连接到此对象的 method .

相当于 connect(sender, signal, this, method, type)

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

另见

disconnect()

static connect(sender, signal, receiver, member[, type=Qt.AutoConnection])
参数:
返回类型:

连接

警告

本节包含将从 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 无法验证 signalmethod 的存在,或者它们的签名字符不一致,则连接句柄将无效。您可以将其强制转换为 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])
参数:
返回类型:

连接

static connect(sender, signal, functor[, type=Qt.AutoConnection])
参数:
返回类型:

连接

static connect(sender, signal, receiver, method[, type=Qt.AutoConnection])
参数:
返回类型:

连接

从发送者对象的 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 函数,否则会导致死锁。

customEvent(event)#
参数:

eventQEvent

此事件处理程序可以在子类中重新实现以接收自定义事件。自定义事件是用户定义的事件,其类型值至少与枚举Type中的User项一样大,通常是一个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([object=None])#
参数:

对象QObject

在对象obj被销毁之前,此信号会被立即发射,通知所有QPointer的实例,且该信号不能被阻塞。

该信号发射后,对象的全部子对象将被立即销毁。

另见

deleteLater() QPointer

static disconnect(connection)#
参数:

connectionConnection

返回类型:

bool

断开连接。

如果connection无效或已被断开,则不执行任何操作,并返回false。

另见

connect()

disconnect(signal, receiver, member)
参数:
  • signal – 字符串

  • receiverQObject

  • member – 字符串

返回类型:

bool

此函数覆盖了disconnect()

从接收器的method中断开signal

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

注意

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

disconnect(signal, functor)
参数:
  • signal – 字符串

  • functorPyCallable

返回类型:

bool

static disconnect(sender, signal, receiver, member)
参数:
  • senderQObject

  • signal – 字符串

  • receiverQObject

  • member – 字符串

返回类型:

bool

警告

本节包含将从 C++ 自动转换为 Python 的代码片段,可能包含错误。

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

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

断开操作一般有三种方式,如下面的示例所示。

  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)
    

在代码中,《None》可作为通配符使用,分别表示“任何信号”、“任何接收对象”或“接收对象中的任何槽”。

sender必须不能是《None》。 (您不能在单个调用中从多个对象断开信号。)

如果signal是《None》,它将使receiver

如果receiver是《None》,它将使任何与signal连接的内容断开。如果不是,则不会断开除了receiver

如果method是《None》,它将使任何与receiver连接的内容断开连接。如果不如此,则只有名称为method的槽将断开连接,其他所有的槽将保持不变。如果省略receiver,则method

注意

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

另见

connect()

static disconnect(sender, signal, functor)
参数:
  • senderQObject

  • signal – 字符串

  • functorPyCallable

返回类型:

bool

static disconnect(sender, signal, receiver, member)
参数:
返回类型:

bool

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

此函数提供了与disconnect(const QObject *sender, const char * signal, const QObject *receiver, const char *method)相同的可能性,但使用

此外,如果以下条件之一成立,则此函数返回false并且没有任何信号和槽会被断开:

  1. 信号不是发送者类或其父类的一个成员。

  2. 方法不是接收者类或其父类的一个成员。

  3. 信号实例不表示一个信号。

QMetaMethod()可以作为通配符使用,表示“任何信号”或“接收对象中的任何槽”。同样地,对于receiver,《None》也可以用来表示“任何接收对象”。在这种情况下,方法应该是QMetaMethod。参数

注意

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

另见

disconnect(const QObject *sender, const char *signal, const QObject *receiver, const char *method)

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

  • member – 字符串

返回类型:

bool

此函数覆盖了disconnect()

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

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

disconnectNotify(signal)#
参数:

信号QMetaMethod

当此对象中的某个信号被断开连接时,将调用此虚函数。

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

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

警告

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

警告

此函数在执行断开连接操作的线程中被调用,这可能与该对象所在的线程不同。此函数还可能在该对象的内部互斥锁被锁定时调用。因此,不允许从你的重实现中重新进入任何QObject函数,包括isSignalConnected()。如果你在重实现中锁定互斥锁,请确保不要在其他地方携带此互斥锁调用QObject函数,否则可能会导致死锁。

dumpObjectInfo()#

将此对象关于信号连接等信息输出到调试输出。

注意

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

dumpObjectTree()#

将子对象的树形结构输出到调试输出。

注意

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

dynamicPropertyNames()#
返回类型:

QByteArray对象的列表

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

emit(arg__1, arg__2)#
参数:
  • arg__1 – 字符串

  • arg__2

返回类型:

bool

event(event)#
参数:

eventQEvent

返回类型:

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)
eventFilter(watched, event)#
参数:
返回类型:

bool

警告

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

警告

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

findChild(type[, name={}[, options=Qt.FindChildrenRecursively]])#
参数:
  • typePyTypeObject

  • name – 字符串

  • optionsFindChildOption 组合

返回类型:

对象

要查找一定类型的 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])#
参数:
返回类型:

Py序列

findChildren(type[, name={}[, options=Qt.FindChildrenRecursively]])
参数:
  • typePyTypeObject

  • name – 字符串

  • optionsFindChildOption 组合

返回类型:

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

installEventFilter(filterObj)#
参数:

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()#
返回类型:

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()#
返回类型:

QMetaObject

警告

本节包含将从 C++ 自动转换为 Python 的代码片段,可能包含错误。

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

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

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

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

示例

obj = QPushButton()
obj.metaObject().className() # returns "QPushButton"
QPushButton.staticMetaObject.className() # returns "QPushButton"
moveToThread(arg__1)#
参数:

arg__1QThread

返回类型:

bool

警告

本节包含将从 C++ 自动转换为 Python 的代码片段,可能包含错误。

修改该对象及其子对象的线程亲和度,并在成功时返回 true。如果对象有父对象,则不能移动。事件处理将在 targetThread 中继续。

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

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

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

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

在更改线程亲和度之前,向此对象发送一个 ThreadChange 事件。您可以处理此事件以执行任何特殊处理。注意,如果 targetThread 不是 None,则将在此对象上投放的所有新事件将在 targetThread 中处理:当它是 None 时,此对象或其子对象的事件处理都不会发生,因为它们已不再与任何线程相关联。

警告

这个函数不是线程安全的;当前线程必须与当前线程亲和度相同。换句话说,这个函数只能“推送”对象从当前线程到另一个线程,不能从任何任意线程“拉取”对象到当前线程。不过,有一个例外:没有线程亲和度的对象可以被“拉取”到当前线程。

另见

thread()

objectName()#
返回类型:

字符串

objectNameᅟ 属性的获取器。

objectNameChanged(objectName)#
参数:

objectName – 字符串

当对象名称被更改后,将发出此信号。新对象名称作为 objectName 传递。

另见

objectName

objectNameᅟ 属性的通告信号。

parent()#
返回类型:

QObject

返回指向父对象的指针。

property(name)#
参数:

name – 字符串

返回类型:

对象

返回对象名称属性name的值。

如果不存在这样的属性,返回的可变对象将无效。

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

警告

此函数违反了面向对象的原则——模块化。但是,如果需要在连接到信号时仅执行昂贵的初始化,它可能很有用。

removeEventFilter(obj)#
参数:

obj – QObject

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

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

始终可以安全地移除事件过滤器,甚至在事件过滤器激活期间(即从eventFilter()函数中)。

sender()#
返回类型:

QObject

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

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

警告

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

警告

如上所述,当通过来自不同于该对象线程的线程的 DirectConnection 从槽调用时,此函数的返回值是无效的。在这种情况下不要使用此函数。

senderSignalIndex()#
返回类型:

int

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

对于默认参数的信号,此函数将始终返回所有参数的索引,而不管哪个被 connect() 使用。例如,信号 destroyed(QObject *obj = \nullptr) 将有两个不同的索引(有与没有参数的),但此函数将始终返回有参数的索引。在信号重载具有不同参数的情况下不适用。

警告

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

警告

当通过来自与该对象线程不同的线程的 DirectConnection 从槽调用时,此函数的返回值是无效的。在这种情况下不要使用此函数。

setObjectName(name)#
参数:

name – 字符串

这是一个重载函数。

setParent(parent)#
参数:

parentQObject

将对象设置为 parent 的子对象。

setProperty(name, value)#
参数:
  • name – 字符串

  • – 对象

返回类型:

bool

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

如果该属性在类中使用了 Q_PROPERTY 定义,则成功时返回真,否则返回假。如果该属性没有使用 Q_PROPERTY 定义,因此没有列出在元对象中,它将作为一个动态属性添加,并返回假。

所有可用属性的详细信息可通过metaObject()dynamicPropertyNames()获取。

动态属性可以使用 property() 重新查询,并且可以通过将属性值设置为非法的 QVariant 来移除。更改动态属性的值将导致向对象发送一个 QDynamicPropertyChangeEvent

注意

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

signalsBlocked()#
返回类型:

bool

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

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

startTimer(interval[, timerType=Qt.CoarseTimer])#
参数:
  • 间隔 – int

  • 计时器类型TimerType

返回类型:

int

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

startTimer(std::chrono::milliseconds{interval}, timerType);
thread()#
返回类型:

QThread

返回对象所在的线程。

timerEvent(event)#
参数:

eventQTimerEvent

此事件处理器可以在子类中重写,以获取对象的计时器事件。

QTimer为计时器功能提供更高级别的接口,并提供有关计时器的更多信息。计时器事件通过event参数传递。

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

  • disambiguation – str

  • n – int

返回类型:

字符串