当前位置:网站首页>QT meta object qmetaobject indexofslot and other functions to obtain class methods attention
QT meta object qmetaobject indexofslot and other functions to obtain class methods attention
2022-07-06 13:43:00 【Jingchu idlers】
- indexOfSlot Return from QObject Index of slot function in derived class , If there is a specified slot function , Then return to non -1 Value , If it doesn't exist , Then return to -1.
indexOfMethod Return from QObject Index of any function of derived class , If there is a specified function , Then return to non -1 Value , If it doesn't exist , Then return to -1.
indexOfSignal Return from QObject Index of any signal of derived class , If there is a specified signal , Then return to non -1 Value , If it doesn't exist , Then return to -1.
The following for QtWidgetsApplication2.h:
#pragma once
#include <QtWidgets/QWidget>
#include "ui_QtWidgetsApplication2.h"
#include"test.h"
class QtWidgetsApplication2 : public QWidget
{
Q_OBJECT
signals:
void setValueSignal(int);
void testSignal(int&);
public slots:
int setMyAge(int&);
int setValue(int nValue);
int setValue(int* pValue);
void setColor(const QColor& clr);
void setTest(const CTest& test);
public:
QtWidgetsApplication2(QWidget *parent = Q_NULLPTR);
private:
Ui::QtWidgetsApplication2Class ui;
};
QtWidgetsApplication2.cpp Document code omitted . The following for test.h
#pragma once
class CTest
{
public:
CTest() {};
~CTest() {};
};
The following for main:
#include "QtWidgetsApplication2.h"
#include <QtWidgets/QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QtWidgetsApplication2 w;
auto nIndex1 = w.metaObject()->indexOfSlot("setValue(int)");
auto nIndex2 = w.metaObject()->indexOfSlot("setMyAge(int&)");
auto nIndex3 = w.metaObject()->indexOfSlot("setValue(int*)");
auto nIndex4 = w.metaObject()->indexOfSlot("setColor(QColor)");
auto nIndex5 = w.metaObject()->indexOfSlot("setTest(CTest)");
qDebug() << "nIndex1:" << nIndex1 << "nIndex2:" << nIndex2
<< "nIndex3:" << nIndex3 << "nIndex4:" << nIndex4
<< "nIndex5:" << nIndex5 << "\r\n";
auto nIndex6 = w.metaObject()->indexOfSlot("int setValue(int)");
auto nIndex7 = w.metaObject()->indexOfSlot(" setValue(int)");
auto nIndex8 = w.metaObject()->indexOfSlot("setValue(int )");
auto nIndex9 = w.metaObject()->indexOfSlot("setValue(int value)");
qDebug() << "nIndex6:" << nIndex6 << "nIndex7:" << nIndex7
<< "nIndex8:" << nIndex8 << "nIndex9:" << nIndex9 << "\r\n";
auto nIndex10 = w.metaObject()->indexOfSlot("setColor(const QColor)");
auto nIndex11 = w.metaObject()->indexOfSlot("setColor(QColor&)");
auto nIndex12 = w.metaObject()->indexOfSlot("setColor(const QColor&)");
auto nIndex13 = w.metaObject()->indexOfMethod("setValue(int)");
auto nIndex14 = w.metaObject()->indexOfMethod("dansir(int)");
qDebug() << "nIndex10:" << nIndex10 << "nIndex11:" << nIndex11
<< "nIndex12:" << nIndex12 << "nIndex13:" << nIndex13
<< "nIndex14:" << nIndex14 << "\r\n";
auto nIndex15 = w.metaObject()->indexOfSignal("setValueSignal(int)");
auto nIndex16 = w.metaObject()->indexOfSignal("setValueSignal(int )");
auto nIndex17 = w.metaObject()->indexOfSignal("testSignal(int&)");
qDebug() << "nIndex15:" << nIndex15 << "nIndex16:" << nIndex16
<< "nIndex17:" << nIndex17 << "\r\n";
w.show();
return a.exec();
}
The input results on my machine are as follows :

From the above input results , Summarized below :
- The parameters of these functions pass in the function or signal to be searched , It does not include the return value of function or signal , Otherwise it will return to -1, Such as : The first 18 Line .
- The parameters of these functions pass in the function or signal to be searched , And there must be no space between the function name and double quotation marks , Otherwise it will return to -1, Such as : The first 19 Line .
- The parameters of these functions pass in the function or signal to be searched , If there is a parameter type , Then there must be no space between the parameter type and the parentheses , Such as : The first 20 Line .
- The parameters of these functions pass in the function or signal to be searched , You can take parameter types , But no specific parameter name , Such as : The first 21 Line .
- The parameters of these functions pass in the function or signal to be searched , If the parameter is a reference and the parameter type is not int、double Basic data types such as , Then remove the reference symbol , Such as :setColor(QColor&) Returns the -1, Need to put setColor(QColor&) Change it to setColor(QColor), If the parameter has const, Will return to -1, Need to put const Get rid of , namely setColor(const QColor&) Should be changed to setColor(QColor).
Sum up : These three indexOf The parameters of the first function are :
- Function or signal name to search .
- Function or signal names cannot have return values .
- If the function or signal name has parameters , Only parameter types can be taken , No specific parameter name .
- If the function or signal name has parameters , There cannot be spaces between parameter types and braces .
- There must be no space between the function or signal name and the double quotation marks .
- Non basic data type const Or the quotation should be removed .
边栏推荐
- [the Nine Yang Manual] 2020 Fudan University Applied Statistics real problem + analysis
- 魏牌:产品叫好声一片,但为何销量还是受挫
- 【手撕代码】单例模式及生产者/消费者模式
- 3.猜数字游戏
- A piece of music composed by buzzer (Chengdu)
- 2022 Teddy cup data mining challenge question C idea and post game summary
- 7. Relationship between array, pointer and array
- FAQs and answers to the imitation Niuke technology blog project (I)
- 深度强化文献阅读系列(一):Courier routing and assignment for food delivery service using reinforcement learning
- C language Getting Started Guide
猜你喜欢

1. Preliminary exercises of C language (1)

4. Binary search

优先队列PriorityQueue (大根堆/小根堆/TopK问题)

仿牛客技术博客项目常见问题及解答(一)

Change vs theme and set background picture

(ultra detailed onenet TCP protocol access) arduino+esp8266-01s access to the Internet of things platform, upload real-time data collection /tcp transparent transmission (and how to obtain and write L
![[during the interview] - how can I explain the mechanism of TCP to achieve reliable transmission](/img/d6/109042b77de2f3cfbf866b24e89a45.png)
[during the interview] - how can I explain the mechanism of TCP to achieve reliable transmission

The latest tank battle 2022 - Notes on the whole development -2

Questions and answers of "Fundamentals of RF circuits" in the first semester of the 22nd academic year of Xi'an University of Electronic Science and technology

仿牛客技术博客项目常见问题及解答(二)
随机推荐
A piece of music composed by buzzer (Chengdu)
[中国近代史] 第五章测验
9.指针(上)
1. Preliminary exercises of C language (1)
Redis实现分布式锁原理详解
There is always one of the eight computer operations that you can't learn programming
最新坦克大战2022-全程开发笔记-2
1.初识C语言(1)
强化学习系列(一):基本原理和概念
Detailed explanation of redis' distributed lock principle
The difference between cookies and sessions
MySQL事务及实现原理全面总结,再也不用担心面试
稻 城 亚 丁
C语言入门指南
重载和重写的区别
杂谈0516
Difference and understanding between detected and non detected anomalies
魏牌:产品叫好声一片,但为何销量还是受挫
About the parental delegation mechanism and the process of class loading
[graduation season · advanced technology Er] goodbye, my student days