首页| 论坛| 消息

回复: 如何在线程运行中,弹出对话框让用户选择,并暂停线程
#6 回 stlcours 的帖子 [ysu533 09-04 16:26]
stlcours:谢谢你辛苦写了这么多代码,但是没有回答到问题的实质。emit fileExist(file)以后,是应该要把线程暂停住(卡住?),等待用户选择后再进行下一步的操作。你如何保证这一点呢? (2016-09-04 15:19)
大哥,这都没看明白啊, emit fileexist之后有个break;已经跳出拷贝了,

会执行XXXX()这个槽。

如果这个槽如果什么也不做,那么拷贝就终止了

如果你需要跳过,你只需要稍微修改下代码 把files 这个变量保存下就行了。

然后你自己实现下 skip, retry, overwrite, 实现跳过,重试,覆盖的功能就行了。

不需要你去额外控制线程。 这就是movetothread的好处。
#7 回 stlcours 的帖子 [ysu533 09-04 18:11]
stlcours:
谢谢你辛苦写了这么多代码,但是没有回答到问题的实质。emit fileExist(file)以后,是应该要把线程暂停住(卡住?),等待用户选择后再进行下一步的操作。你如何保证这一点呢?

今天没什么事,写了比较完整的例子,见附件,有什么问题,可以交流,编译需要qt5,
实现功能是将一个目录中的文件拷贝到另一个目录,已存在文件,可以跳过继续复制,或者覆盖文件,或是终止复制。
#8 回 ysu533 的帖子 [stlcours 09-04 18:18]
ysu533:今天没什么事,写了比较完整的例子,见附件,有什么问题,可以交流,编译需要qt5,
实现功能是将一个目录中的文件拷贝到另一个目录,已存在文件,可以跳过继续复制,或者覆盖文件,或是终止复制。
....... (2016-09-04 18:11) 
谢谢。全是lamda,家里的XP机子太旧了没法运行,明天到公司再试试。
不过我还是没有明白你的意思,怎么能离开break呢?根据用户的指示,再决定是否继续处理后面的文件,而你这样就是完全退出了,似乎不对啊。。。
#9 回 stlcours 的帖子 [ysu533 09-04 18:22]
stlcours:谢谢。全是lamda,家里的XP机子太旧了没法运行,明天到公司再试试。
不过我还是没有明白你的意思,怎么能离开break呢?根据用户的指示,再决定是否继续处理后面的文件,而你这样就是完全退出了,似乎不对啊。。。 (2016-09-04 18:18)
你试试,就知道对不对了。当然,代码结构不一定要这么写。 你可以故意制造冲突, 比如在第一个目录还没复制完,马上在ui上操作复制第二个目录,你会发现,并不会覆盖第一个目录的相关变量, 比如dircopy中的 fromList 和 toList。
我离开了,后面又回来了, 除非用户选择了 abort
#10 [哥依然潇洒 09-05 08:51]
新手回答圣骑士的对话看着果真很爽
!!!

<< 1 2 3 >> (2/3)

回复 发表
主题 版块