刚学习QT的时候,跟着教程做一些简答的实验,教程简单的界面使用UI文件,直接在界面上拖一个按键,在右键go to slot,在编写槽函数。
我以前没学过C++,一直以为这个自动跳转过去的slot函数是一个虚函数,只是在这儿reinpliment而已。今天尝试自己通过纯代码编写,找了半天也没找到这个所谓的虚函数原型。
百度了才知道这个void on_pushbutton_clicked()不是已经声明的虚函数,而是按照这种格式写的函数不需要connect,用的是另外一个函数,在ui_mainwindow.h这个文件中,名字叫connectSlotsByName
详细说明:
void QMetaObject::connectSlotsByName ( QObject * object ) [static]
Searches recursively for all child objects of the given object, and connects matching signals from them to slots of object that follow the following form:
void on_<object name>_<signal name>(<signal parameters>);
Let‘s assume our object has a child object of type QPushButton with the object name button1. The slot to catch the button‘s clicked() signal would be:
void on_button1_clicked();
QMetaObject::connectSlotsByName(MainWindow);
大神们都不推荐这么使用。