关于自定义信号和槽函数,是qt中最常用的。信号只需在头文件中进行声明,没有返回值,可以带参数,需要signals开头。在connect连接时,最好使用qt5函数指针的方法,在访问类中的成员函数时前面要加对应类的作用域:类名::
头文件中:
signals:
void mysig();
void mysig(int ,QString);//这里对信号进行重载,声明了一个不带参数,还有带参数的。
private slots:
void myslot1();
void myslot2(int ,QString);
源文件中:
//这是qt4的写法,通过SIGNAL和SLOT宏进行连接,使用这两个宏只是做了字符串替换,不做语法检查。虽然写法简单,但是不建议使用。
//connect(this,SIGNAL(mysig()),this,SLOT(myslot1()));
//connect(this,SIGNAL(mysig(int,QString)),this,SLOT(myslot2(int,QString)));
//这是qt5的写法,通过声明函数指针,来把它指向信号或者槽函数。注意:在QT中获得类的成员函数的指针的时候需要限制作用域才行,前面加MainWindow::
void (MainWindow::*mysigfun1)()=&MainWindow::mysig;
void (MainWindow::*mysigfun2)(int,QString)=&MainWindow::