DAWorkbench
0.0.1
DAWorkbench API
载入中...
搜索中...
未找到
DASignalBlockers.hpp
1
#ifndef DASIGNALBLOCKERS_H
2
#define DASIGNALBLOCKERS_H
3
#include <vector>
4
#include <QObject>
5
#include <QSignalBlocker>
6
namespace
DA
7
{
20
class
DASignalBlockers
21
{
22
public
:
23
// 使用可变参数模板构造函数
24
template
<
typename
... Args >
25
explicit
DASignalBlockers
(Args*... objects)
26
{
27
addObjects(objects...);
28
}
29
30
// 禁止拷贝和赋值
31
DASignalBlockers
(
const
DASignalBlockers
&) =
delete
;
32
DASignalBlockers
& operator=(
const
DASignalBlockers
&) =
delete
;
33
34
// 移动构造函数
35
DASignalBlockers
(
DASignalBlockers
&&) =
default
;
36
37
// 移动赋值运算符
38
DASignalBlockers
& operator=(
DASignalBlockers
&&) =
default
;
39
40
private
:
41
std::vector< QSignalBlocker > blockers;
// 直接在栈上存储 QSignalBlocker
42
43
// 辅助函数:递归添加 QObject 到 blockers
44
template
<
typename
First,
typename
... Rest >
45
void
addObjects(First* first, Rest*... rest)
46
{
47
if
(first) {
48
blockers.emplace_back(*first);
// 在栈上创建 QSignalBlocker
49
}
50
if
constexpr
(
sizeof
...(rest) > 0) {
// 如果还有剩余参数
51
addObjects(rest...);
52
}
53
}
54
};
55
}
56
#endif
// DASIGNALBLOCKERS_H
DA::DASignalBlockers
支持多个变量执行类似QSingalBlocker的操作
Definition
DASignalBlockers.hpp:21
DA
序列化类都是带异常的,使用中需要处理异常
Definition
AppMainWindow.cpp:44
src
DAShared
DASignalBlockers.hpp
制作者
1.9.8