1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#ifndef QDIALOGBUTTONBOX_P_H
#define QDIALOGBUTTONBOX_P_H
//
// W A R N I N G
// -------------
//
// This file is not part of the Qt API. It exists purely as an
// implementation detail. This header file may change from version to
// version without notice, or even be removed.
//
// We mean it.
//
#include <private/qwidget_p.h>
#include <qdialogbuttonbox.h>
QT_BEGIN_NAMESPACE
class Q_AUTOTEST_EXPORT QDialogButtonBoxPrivate : public QWidgetPrivate
{
Q_DECLARE_PUBLIC(QDialogButtonBox)
public:
enum class RemoveReason {
HideEvent,
ManualRemove,
Destroyed,
};
enum class LayoutRule {
DoLayout,
SkipLayout,
};
enum class AddRule {
Connect,
SkipConnect,
};
QDialogButtonBoxPrivate(Qt::Orientation orient);
QList<QAbstractButton *> buttonLists[QDialogButtonBox::NRoles];
QHash<QPushButton *, QDialogButtonBox::StandardButton> standardButtonHash;
QHash<QAbstractButton *, QDialogButtonBox::ButtonRole> hiddenButtons;
Qt::Orientation orientation;
QDialogButtonBox::ButtonLayout layoutPolicy;
QBoxLayout *buttonLayout;
std::unique_ptr<QObject> filter;
bool center;
bool ignoreShowAndHide = false;
void createStandardButtons(QDialogButtonBox::StandardButtons buttons);
void removeButton(QAbstractButton *button, RemoveReason reason);
void layoutButtons();
void initLayout();
void resetLayout();
QPushButton *createButton(QDialogButtonBox::StandardButton button,
LayoutRule layoutRule = LayoutRule::DoLayout);
void addButton(QAbstractButton *button, QDialogButtonBox::ButtonRole role,
LayoutRule layoutRule = LayoutRule::DoLayout,
AddRule addRule = AddRule::Connect);
void handleButtonDestroyed();
void handleButtonClicked();
bool handleButtonShowAndHide(QAbstractButton *button, QEvent *event);
void addButtonsToLayout(const QList<QAbstractButton *> &buttonList, bool reverse);
void ensureFirstAcceptIsDefault();
void retranslateStrings();
void disconnectAll();
QList<QAbstractButton *> allButtons() const;
QList<QAbstractButton *> visibleButtons() const;
QDialogButtonBox::ButtonRole buttonRole(QAbstractButton *button) const;
};
QT_END_NAMESPACE
#endif // QDIALOGBUTTONBOX_P_H
|