Fix app crash.

Use pointers.

Signed-off-by: Yuhang Zhao <2546789017@qq.com>
This commit is contained in:
Yuhang Zhao 2020-05-08 18:13:43 +08:00
parent 43d83bf156
commit 53700554d2
1 changed files with 31 additions and 31 deletions

View File

@ -93,48 +93,48 @@ int main(int argc, char *argv[]) {
// Qt Widgets example: // Qt Widgets example:
QWidget widget; QWidget widget;
widget.setContentsMargins(0, 0, 0, 0); widget.setContentsMargins(0, 0, 0, 0);
QLabel label; QLabel *label = new QLabel;
label.setText(QObject::tr("Hello, World!")); label->setText(QObject::tr("Hello, World!"));
QObject::connect(&widget, &QWidget::windowTitleChanged, &label, QObject::connect(&widget, &QWidget::windowTitleChanged, label,
&QLabel::setText); &QLabel::setText);
QPushButton minimizeButton; QPushButton *minimizeButton = new QPushButton;
minimizeButton.setText(QObject::tr("Minimize")); minimizeButton->setText(QObject::tr("Minimize"));
QObject::connect(&minimizeButton, &QPushButton::clicked, &widget, QObject::connect(minimizeButton, &QPushButton::clicked, &widget,
&QWidget::showMinimized); &QWidget::showMinimized);
QPushButton maximizeButton; QPushButton *maximizeButton = new QPushButton;
maximizeButton.setText(QObject::tr("Maximize")); maximizeButton->setText(QObject::tr("Maximize"));
QObject::connect(&maximizeButton, &QPushButton::clicked, QObject::connect(maximizeButton, &QPushButton::clicked,
[&widget, &maximizeButton]() { [&widget, &maximizeButton]() {
if (widget.isMaximized()) { if (widget.isMaximized()) {
widget.showNormal(); widget.showNormal();
maximizeButton.setText(QObject::tr("Maximize")); maximizeButton->setText(QObject::tr("Maximize"));
} else { } else {
widget.showMaximized(); widget.showMaximized();
maximizeButton.setText(QObject::tr("Restore")); maximizeButton->setText(QObject::tr("Restore"));
} }
}); });
QPushButton closeButton; QPushButton *closeButton = new QPushButton;
closeButton.setText(QObject::tr("Close")); closeButton->setText(QObject::tr("Close"));
QObject::connect(&closeButton, &QPushButton::clicked, &widget, QObject::connect(closeButton, &QPushButton::clicked, &widget,
&QWidget::close); &QWidget::close);
QHBoxLayout tbLayout; QHBoxLayout *tbLayout = new QHBoxLayout;
tbLayout.setContentsMargins(0, 0, 0, 0); tbLayout->setContentsMargins(0, 0, 0, 0);
tbLayout.setSpacing(0); tbLayout->setSpacing(0);
tbLayout.addSpacing(15); tbLayout->addSpacing(15);
tbLayout.addWidget(&label); tbLayout->addWidget(label);
tbLayout.addStretch(); tbLayout->addStretch();
tbLayout.addWidget(&minimizeButton); tbLayout->addWidget(minimizeButton);
tbLayout.addWidget(&maximizeButton); tbLayout->addWidget(maximizeButton);
tbLayout.addWidget(&closeButton); tbLayout->addWidget(closeButton);
QVBoxLayout mainLayout; QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout.setContentsMargins(0, 0, 0, 0); mainLayout->setContentsMargins(0, 0, 0, 0);
mainLayout.setSpacing(0); mainLayout->setSpacing(0);
mainLayout.addLayout(&tbLayout); mainLayout->addLayout(tbLayout);
mainLayout.addStretch(); mainLayout->addStretch();
widget.setLayout(&mainLayout); widget.setLayout(mainLayout);
WinNativeEventFilter::WINDOWDATA data_widget; WinNativeEventFilter::WINDOWDATA data_widget;
data_widget.ignoreObjects << &minimizeButton << &maximizeButton data_widget.ignoreObjects << minimizeButton << maximizeButton
<< &closeButton; << closeButton;
const auto hWnd_widget = reinterpret_cast<HWND>(widget.winId()); const auto hWnd_widget = reinterpret_cast<HWND>(widget.winId());
const int tbh_widget = WinNativeEventFilter::getSystemMetric( const int tbh_widget = WinNativeEventFilter::getSystemMetric(
hWnd_widget, WinNativeEventFilter::SystemMetric::TitleBarHeight, false); hWnd_widget, WinNativeEventFilter::SystemMetric::TitleBarHeight, false);