MCPcopy Create free account
hub / github.com/Liniyous/ElaWidgetTools / ElaWindow

Method ElaWindow

ElaWidgetTools/ElaWindow.cpp:29–116  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

27Q_PROPERTY_CREATE_Q_CPP(ElaWindow, ElaWindowType::StackSwitchMode, StackSwitchMode)
28Q_TAKEOVER_NATIVEEVENT_CPP(ElaWindow, d_func()->_appBar);
29ElaWindow::ElaWindow(QWidget* parent)
30 : QMainWindow{parent}, d_ptr(new ElaWindowPrivate())
31{
32 Q_D(ElaWindow);
33 d->q_ptr = this;
34 d->_pStackSwitchMode = ElaWindowType::StackSwitchMode::Popup;
35 setProperty("ElaBaseClassName", "ElaWindow");
36 resize(1020, 680); // 默认宽高
37
38 d->_pThemeChangeTime = 700;
39 d->_pNavigationBarDisplayMode = ElaNavigationType::NavigationDisplayMode::Auto;
40
41 // 自定义AppBar
42 d->_appBar = new ElaAppBar(this);
43 d->_appBar->setWindowButtonFlag(ElaAppBarType::NavigationButtonHint);
44 connect(d->_appBar, &ElaAppBar::routeBackButtonClicked, this, []() {
45 ElaActionCommander::getInstance()->undoCommand("ElaWidgetToolsAction");
46 });
47 connect(d->_appBar, &ElaAppBar::routeForwardButtonClicked, this, []() {
48 ElaActionCommander::getInstance()->redoCommand("ElaWidgetToolsAction");
49 });
50 connect(d->_appBar, &ElaAppBar::closeButtonClicked, this, &ElaWindow::closeButtonClicked);
51 // 导航栏
52 d->_navigationBar = new ElaNavigationBar(this);
53 // 返回按钮状态变更
54 connect(ElaActionCommander::getInstance(), &ElaActionCommander::commanderStateChanged, d, &ElaWindowPrivate::onNavigationRouterStateChanged);
55
56 // 转发用户卡片点击信号
57 connect(d->_navigationBar, &ElaNavigationBar::userInfoCardClicked, this, &ElaWindow::userInfoCardClicked);
58 // 转发点击信号
59 connect(d->_navigationBar, &ElaNavigationBar::navigationNodeClicked, this, &ElaWindow::navigationNodeClicked);
60 // 跳转处理
61 connect(d->_navigationBar, &ElaNavigationBar::navigationNodeClicked, d, &ElaWindowPrivate::onNavigationNodeClicked);
62 // 新增窗口
63 connect(d->_navigationBar, &ElaNavigationBar::navigationNodeAdded, d, &ElaWindowPrivate::onNavigationNodeAdded);
64 // 移除窗口
65 connect(d->_navigationBar, &ElaNavigationBar::navigationNodeRemoved, d, &ElaWindowPrivate::onNavigationNodeRemoved);
66 // 在新窗口打开
67 connect(d->_navigationBar, &ElaNavigationBar::pageOpenInNewWindow, this, &ElaWindow::pageOpenInNewWindow);
68
69 // 导航中心堆栈窗口
70 d->_navigationCenterStackedWidget = new ElaCentralStackedWidget(this);
71 d->_navigationCenterStackedWidget->setContentsMargins(0, 0, 0, 0);
72 QWidget* navigationCentralWidget = new QWidget(this);
73 navigationCentralWidget->setObjectName("ElaWindowNavigationCentralWidget");
74 navigationCentralWidget->setStyleSheet("#ElaWindowNavigationCentralWidget{background-color:transparent;}");
75 navigationCentralWidget->installEventFilter(this);
76 d->_centerLayout = new QHBoxLayout(navigationCentralWidget);
77 d->_centerLayout->setSpacing(5);
78 d->_centerLayout->addWidget(d->_navigationBar);
79 d->_centerLayout->addWidget(d->_navigationCenterStackedWidget);
80 d->_centerLayout->setContentsMargins(d->_contentsMargins, 0, 0, 0);
81
82 // 事件总线
83 d->_focusEvent = new ElaEvent("WMWindowClicked", "onWMWindowClickedEvent", d);
84 d->_focusEvent->registerAndInit();
85
86 // 导航栏操作

Callers

nothing calls this directly

Calls 10

undoCommandMethod · 0.80
redoCommandMethod · 0.80
addWidgetMethod · 0.80
registerAndInitMethod · 0.80
getThemeModeMethod · 0.80
syncWindowDisplayModeMethod · 0.80
getWindowDisplayModeMethod · 0.80
setWindowButtonFlagMethod · 0.45
setIsTransparentMethod · 0.45

Tested by

no test coverage detected