#记录不按章节顺序,碰到问题就记下来。

1.关于Mapper、Map()等用法:

mapper->setMapping(button0,codec->toUnicode(“0”));
connect(button0,SIGNAL(clicked()),mapper,SLOT(map()));
connect(mapper,SIGNAL(mapped(QString)),this,SLOT(buttonClicked(QString)));
解疑:
QSignalMapper类是专门用来绑定发送者信号函数的工具类。
mapper->setMapping(button0,codec->toUnicode(“0”));这句话的意思是让该工具类影射button0对象的信号。
connect(button0,SIGNAL(clicked()),mapper,SLOT(map()));是指定影射button0按钮的clicked信号函数
connect(mapper,SIGNAL(mapped(QString)),this,SLOT(buttonClicked(QString)));这句话的意思把具体影射是根据QString参数类型来判定,该工具类取按钮的名称值,然后传送给buttonClicked(QString)槽函数处理。
2. 1、关于c++函数过载, QOverload::of这个语句表示的是什么意思,有什么作用呢,百度查的没有看懂
2、今天查出了一个bug,说是重定义,具体就是自定义了一个继承了QGroupBox的子类,其中有一个signals信号函数是void valueChanged(int value);,这个方法假如再源文件实现的话就显示重定义,这个是为什么呢?是父类没有把他设置为虚函数吗,那为什么还要在我定义的类中声明这个信号方法,而不是直接使用&QGroupBox::valueChanged呢
解答:
1.QVerload是用来选择加载QSpinBox类的valueChanged信号函数,然后把它绑定另外一个滑动条对象的setValue槽函数。
实现对Qt装饰件的默认信号函数和槽函数的自由绑定,以方便第三方程序的使用。
2.Qt提供了很多种方式的信号/槽机构,因为版本不同,对它这个机制实现也有所不同。我们在使用时要按照它的框架规则去使用。不能直接使用OO的思想套用。

Leave a Comment