关于Qt信号与槽的小结
2016-01-17 22:34
429 查看
制作电子相册的时候,遇到了QMainWindow要添加控件的时候,要加上setCentralWidget()
还有要弄明白GraphicsView框架
一般来说,view是显示,QGraphicsScene则是为了控制里面的Item和widget
在Scene上添加的widget和item都会返回到相应的QGraphicsProxyWidget以及GraphicsItem
在做自动播放时,遇到了,只会循环一次以及循环方向相反
这里要注意的是QGraphicsScene管理item,widget时,是以堆栈形式管理的,是先进后出的顺序,那么循环也要倒过来
还有,定时器是一个大问题,起初只能循环一次,或者在第一第二张之间循环,第一个原因是在定时器在一个循环里面,那么只能出发外部循环的第一次
那么,要将定时器放在构造函数中,槽里面不需要添加循环,因为定时器会自动循环起来,以避免出现上述情况。
接下来就是对信号与槽之间的操作,每一定时器跳出,则刷新一副图片。
原本以为原本以为将数据库中的图片存入容器,在取出的同时写入图片这个流程是OK的。
但是,发现的是,这是一口全部写入图片,接着就只剩下第一张图片显示在上面,切换也只能切换到第二张去了。
发现这个问题之后,只能将定时器连接播放动画的信号与槽再一次分解。
中间需要多一个信号和槽进行中转,对数据库的id进行操作。
记住初始化的中转指针的数据,static必须加上。只有这样才能将指针里面的值在时时刻刻的变化。
要是要实例一个定时器,每一次输出timeout()信号,刷新一次图片,是不能一个connect()办到的。
必须将槽信号分解,只要槽受到信号的同时发出新的信号,同时更改存储同list容器数据的i值,在用list.at()调用,就能分解出这个流程了
还有要弄明白GraphicsView框架
一般来说,view是显示,QGraphicsScene则是为了控制里面的Item和widget
在Scene上添加的widget和item都会返回到相应的QGraphicsProxyWidget以及GraphicsItem
在做自动播放时,遇到了,只会循环一次以及循环方向相反
这里要注意的是QGraphicsScene管理item,widget时,是以堆栈形式管理的,是先进后出的顺序,那么循环也要倒过来
还有,定时器是一个大问题,起初只能循环一次,或者在第一第二张之间循环,第一个原因是在定时器在一个循环里面,那么只能出发外部循环的第一次
那么,要将定时器放在构造函数中,槽里面不需要添加循环,因为定时器会自动循环起来,以避免出现上述情况。
接下来就是对信号与槽之间的操作,每一定时器跳出,则刷新一副图片。
原本以为原本以为将数据库中的图片存入容器,在取出的同时写入图片这个流程是OK的。
但是,发现的是,这是一口全部写入图片,接着就只剩下第一张图片显示在上面,切换也只能切换到第二张去了。
发现这个问题之后,只能将定时器连接播放动画的信号与槽再一次分解。
中间需要多一个信号和槽进行中转,对数据库的id进行操作。
记住初始化的中转指针的数据,static必须加上。只有这样才能将指针里面的值在时时刻刻的变化。
要是要实例一个定时器,每一次输出timeout()信号,刷新一次图片,是不能一个connect()办到的。
必须将槽信号分解,只要槽受到信号的同时发出新的信号,同时更改存储同list容器数据的i值,在用list.at()调用,就能分解出这个流程了
void MainWindow::test() { qDebug() << *i << "test"; if(*i < list.size()) { getshow(*i); animation(); } else { getshow(0); } } void MainWindow::changetest() { static int j = 0; if(j == 0 && j >= list.size()) { j = 0; i = &j; emit getid(*i); } else { j = j + 1; i = &j; emit getid(*i); qDebug() << *i; } }
相关文章推荐
- 如何在Qt工程中正确地引用用户自定义控件
- QT无边框可移动可改变大小窗体
- Qt5 取消了QTextCodec::setCodecForTr()和QTextCodec::setCodecForCString()这两个函数。
- QT中PRO文件写法
- Qt之JSON生成与解析
- qtchooser
- QT5.5或QT5.6与echarts实现动态图表
- qt发布
- Qt、GTK 和KDE、GNOME的关系-转
- Qt中截图功能的实现
- 通过qss实现Qt按钮的默认效果——qconicalgradient
- Ubuntu安装QT出现权限不够的错误
- Qt 插件综合编程-基于插件的OpenStreetMap瓦片查看器客户端(0)-引子
- qt嵌入式版本源码编译的各种问题
- Qt creater设置成黑色主题
- Qt 和 Boost关于信号和槽的对比说明
- Qt5中使用lambda表达式
- 自学QT之传递控件指针判断是哪个控件被操作
- 关于Qt信号/槽的参数类型
- pyqt5-为QListWidget添加右键菜单