首页 > TAG信息列表 > qobject

简要源码分析Q_PROPERTY

本文不打算像文档一样翻译Q_PROPERTY,而是从源码的角度来看看怎么使用Q_PROPERTYQT的PROPERTY官方的定义,为了保持格式,我特地截屏,如下 毫无疑问, QT的moc系统对Q_PROPERTY有特别的处理,我们现在看看他处理了什么.首先,定义一个类Test,代码如下: class Test : public QObject {

Qt的Q_CLASSINFO简要分析

新建一个继承于QObject的空白类,如下: class MyInfo : public QObject { Q_OBJECT public: explicit MyInfo(QObject *parent = nullptr); signals: public slots: }; 然后加上Q_CLASSINFO,如下: class MyInfo : public QObject { Q_OBJECT Q_CLASSINFO("Vers

QT“程序异常结束”问题解决

今天用QT写个小程序,出现了一个小问题,就是程序编译通过了,也能运行,但是有一个按键按下后程序就会异常结束。 解决办法:由于文件中有多个类,而使用某个类的函数时,存在对象只声明,未创建就使用的情况。例如,程序中只声明了一个对象QObject * object,未进行object = new QObject就直接使用o

QObject::connect: Parentheses expected, signal QAction::triggered in ..

提示信息: QObject::connect: Parentheses expected, signal QAction::triggered in .. QObject::connect: (receiver name: 'MainWindow') 且槽函数未执行。 原因:信号语句中少了括号(猪心大姨),应该写成 connect(openAct,SIGNAL(triggered()),this,SLOT(open())); connect(newAct

QObject::startTimer: Timers cannot be started from another thread

今天发现一个bug,找了很久,一开始以为是在线程中使用了 time 等时间类的类,找了半天,并没有发现类似玩意。 最后想了想,应该是哪里直接操作(没有通过信号槽)QObject类(或子类)。果然,在一步一步中调试发现,某个地方直接给QWidget赋值图片操作QGraphicsScene了。 所以出现RT警告的情况有两个情

PyQt5 QObject-对象父类、子类设置和查找

################################ # PyQt5中文网 - PyQt5全套视频教程 # # https://www.PyQt5.cn/ # # 主讲: 村长 # ################################ from PyQt5.Qt import * import sys class Window(QWidget): def __init__(self):

【Qt】QObject::connect: Cannot queue arguments of type 'QVector<int>' Make sure '

如下截图所示,增加三行代码即可: #include<QMetaType> Q_DECLARE_METATYPE(QVector<int>); qRegisterMetaType<QVector<int>>("QVector<int>&");    

Qt中C++与Qml互相调用

QML调用C++ 思路 一种解决方案: 使用Qt中的QML调用C++中的类,首先使用需要定义一个继承自 QObject 的类,然后将这个类注册到 QML 中去,然后在这个类使用 Q_INVOKABLE 这个宏修饰的函数,都可以直接在QML中调用。 示例: ## 0x01 定义一个C++类 #include <QObject> #include <QDebug> c

Qt-事件过滤及实例

    事件过滤器功能使得一个QObject对象可以监视另一个QObject对象中的事件,通过在一个QObject对象中安装事件过滤器,可以在事件到达该对象前捕获事件,从而起到监视该对象的作用。     例如,实现按下按钮时,按钮上的文字为“Key Down”,松开按钮时,按钮上的文字为“Key Up”,创建一个Q

QT中的强制类型转换汇总

dynamic_cast: 通常在基类和派生类之间转换时使用,run-time cast。const_cast: 主要针对const和volatile的转换。static_cast: 一般的转换,no run-time check.通常,如果你不知道该用哪个,就用这个。reinterpret_cast: 用于进行没有任何关联之间的转换,比如一个字符指针转换为一个整形

QT中的信号与槽

Q_OBJECT 使用信号与槽的类中,必须要加入宏 Q_OBJECT signal & slot 信号与槽之间的绑定 QObject::connect(sender , SIGNAL(signal()), receiver, SLOT(slot())); QObject :是QT所以类的父类 connect() :是一个静态函数 sender:是发送信号的对象名称 signal():是发送的对象的信号

对象树

在Qt中创建对象的时候会提供一个Parent对象指针 当你创建一个QObject对象时,会看到QObject的构造函数接收一个QObject指针作为参数,这个参数就是 parent,也就是父对象指针 这相当于,在创建QObject对象时,可以提供一个其父对象,我们创建的这个QObject对象会自动添加到其父对象的children(

Qt源码解析5-对象模型

Qt源码解析 索引 标准 C++ 对象模型为对象范例提供了非常有效的运行时支持。但它的静态性质在某些问题领域是不灵活的。图形用户界面编程是一个需要运行时效率和高度灵活性的领域。Qt 通过将 C++ 的速度与 Qt 对象模型的灵活性相结合来提供这一点。 Qt 将这些特性添加到 C++ 中:

Qt小技巧12.QObject子类D指针的使用

1 前言 D指针可以隐藏类的实现细节,对于需要发布库文件的项目来说屏蔽实现细节尤为重要,具体有哪些优点自行查阅下吧,文章太多了,不再重复了,下面介绍下如何使用Qt的方式将D指针应用于自定义类中。 2 举个例子 按照Qt的惯用方法,例如有个自定义的QObject子类叫MyObject(文件myobject.h),需

Qt 定时器

1.定时器 Qt 中的定时器类是QTimer,。QTimer不是一个可见的界面组件。 QTimer继承自QObject类,其主要属性是interval,该属性设置定时中断的周期,单位为毫秒;QTimer主要的信号是timeout(),在定时中断时发射此信号。 在程序设计中,如果需要高精度定时器,一般不建议采用Qt的QTimer类,这是

PYQT之- QObject与线程QThread的关系

QObject 介绍 QObject 是 Qt对象模型的核心。该模型的核心特征是具有一种非常强大的无缝对象通信机制,即信号和槽。您可以使用connect ()将信号连接到槽,并使用disconnect ()断开连接。为避免永无止境的通知循环,您可以使用blockSignals ()临时阻止信号。 QObjects 在对象树中

QCamera

QCamera  Header: #include <QCamera> qmake: QT += multimedia Inherits: QMediaObject             Public Functions   QCamera(QObject *parent = nullptr)   QCamera(const QByteArray &deviceName, QObject *parent = nullptr)   QCamera(c

undefined reference to `Counter::valueChanged(int)‘

问题: i'm trying to learn qt.this is my first example that I'm practicing.but i have this error:C:\Qt2\Qt5.2.1\Tools\QtCreator\bin\recognize_signal_slot\main.cpp:19: error: undefined reference to `Counter::valueChanged(int)' I don'

Qt--内存回收机制

#include "mywidget.h" #include "mybutton.h" #include<QPushButton> myWidget::myWidget(QWidget *parent) : QWidget(parent) { //本窗口的位置都是相对于父窗口的左上角位置 move(100,100); QPushButton *b1= new QPushButton(this); b1->setT

QQmlEngine(QML引擎)

一、描述  QQmlEngine 类为实例化 QML 组件提供了环境。 每个 QML 组件都在 QQmlContext 中实例化。在 QML 中,上下文是按层次排列的,这个层次由 QQmlEngine 管理。 在创建任何 QML 组件之前,应用程序必须创建一个 QQmlEngine 才能访问 QML 上下文。 以下示例展示了如何创建一个简

moveToThread 的样例

main.cpp #include <QCoreApplication> #include "Controller.h" using namespace std; int main(int argc,char *argv[]) { QCoreApplication a(argc,argv); qDebug() << "main thread:" << QThread::currentThreadId();

qobject_impl.h

1、qobject_impl.h /**************************************************************************** ** ** Copyright (C) 2016 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the QtCore module of the Qt Toolkit. ** ** $QT

Window系统下开发Qt(13)-- QSignalMapper的运用

一般点击一个按钮,并且想将预先定好的参数一同发送出去时,由于按钮的点击事件clicked()并没有参数,那么按照一般的做法就会先定义一个槽与clicked()信号关联,然后获取参数,再通过自定义的信号将该参数发送出去。   这个过程无疑是繁琐的,为此,Qt提供了QSignalMapper这个类来解决这个问

QThread

QThread   Header: #include <QThread> qmake: QT += core Inherits: QObject           Public Types enum Priority { IdlePriority, LowestPriority, LowPriority, NormalPriority, ..., InheritPriority }   Public Functions   QThread(QObj

QAbstractState

QAbstractState   Header: #include <QAbstractState> qmake: QT += core Since: Qt 4.6 Inherits: QObject Inherited By: QFinalState, QHistoryState, and QState               Properties active : const bool 1 property inherited from QOb