Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add initial Qt documentation #3370

Merged
merged 8 commits into from
Apr 9, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions src/includes/getting-started-config/native.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,3 @@
Import and initialize the Sentry SDK early in your application setup:

```c
#include <sentry.h>

Expand Down
31 changes: 31 additions & 0 deletions src/includes/getting-started-config/native.qt.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
```cpp
#include <QtWidgets>
#include <sentry.h>

int main(int argc, char *argv[])
{
sentry_options_t *options = sentry_options_new();
sentry_options_set_dsn(options, "___PUBLIC_DSN___");
sentry_options_set_release(options, "my-project-name@2.3.12");
sentry_init(options);

// Make sure everything flushes
auto sentryShutdown = qScopeGuard([] { sentry_shutdown(); });

QApplication app(argc, argv);
QWidget widget;
widget.show();

return app.exec();
}
```

Alternatively, the DSN can be passed as `SENTRY_DSN` environment variable during runtime. This can be especially useful for server applications.

<Alert level="warning" title="Warning">

Calling `sentry_shutdown()` before exiting the application is critical. It
ensures that events can be sent to Sentry before execution stops. Otherwise,
event data may be lost.

</Alert>
9 changes: 5 additions & 4 deletions src/includes/getting-started-install/native.mdx
Original file line number Diff line number Diff line change
@@ -1,24 +1,25 @@
The Native SDK currently supports **Windows**, **macOS**, **Linux**, and **Android**.

To build the SDK, download the latest release of the SDK from the [Releases page](https://github.com/getsentry/sentry-native/releases). The SDK is managed as a [CMake] project, which additionally supports several configuration options, such as the backend to use.
To build the SDK, download the latest sources from the [Releases page](https://github.com/getsentry/sentry-native/releases). The SDK is managed as a [CMake] project, which additionally supports several configuration options, such as the backend to use.

For example, `CMake` can be used like this (on macOS):

```shell
# configure the cmake build into the `build` directory, with crashpad (on macOS)
cmake -B build -D SENTRY_BACKEND=crashpad --config RelWithDebInfo
cmake -B build -D SENTRY_BACKEND=crashpad --config RelWithDebInfo -S .
# build the project
cmake --build build --config RelWithDebInfo --parallel
# install the resulting artifacts into a specific prefix
cmake --install build --prefix install
# which will result in the following (on macOS):
exa --tree install
exa --tree install --level 2
install
├── bin
│ └── crashpad_handler
├── include
│ └── sentry.h
└── lib
├── cmake
torarnv marked this conversation as resolved.
Show resolved Hide resolved
├── libsentry.dylib
└── libsentry.dylib.dSYM
```
Expand All @@ -27,6 +28,6 @@ install

<Alert level="warning" title="Bundling crashpad_handler">

When using the _Crashpad backend_, which is the default on Windows and macOS, the `crashpad_handler` binary has to be shipped alongside the application binary. See the [Crashpad documentation](configuration/backends/crashpad/) for more information.
When using the _Crashpad backend_, which is the default on Windows and macOS, the `crashpad_handler` binary has to be shipped alongside the application binary. See the [Crashpad documentation](/platforms/native/configuration/backends/crashpad/) for more information.

</Alert>
50 changes: 50 additions & 0 deletions src/includes/getting-started-install/native.qt.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
The Qt integration is part of the [`sentry-native`](https://github.com/getsentry/sentry-native/) SDK,
which currently supports Windows, macOS, Linux, and Android. Both Qt 5 and Qt 6 are supported.

To build the SDK, download the latest sources from the [Releases page](https://github.com/getsentry/sentry-native/releases). The SDK is managed as a [CMake] project, which additionally supports several configuration options, such as the backend to use.

To enable the Qt integration set the `SENTRY_INTEGRATION_QT` option to `YES`.

<Note>

If the Qt libraries are not installed in one of the predefined `CMake` [system prefix paths](https://cmake.org/cmake/help/latest/variable/CMAKE_SYSTEM_PREFIX_PATH.html), where they can be found by `CMake`, you will need to set [`CMAKE_PREFIX_PATH`](https://cmake.org/cmake/help/latest/variable/CMAKE_PREFIX_PATH.html) explicitly.

</Note>

For example (on macOS):

```shell
# Configure the cmake build into the `build` directory,
# with crashpad, and Qt integration (on macOS).
cmake -B build \
-D SENTRY_BACKEND=crashpad \
-D SENTRY_INTEGRATION_QT=YES \
--config RelWithDebInfo \
-S .

# Build the project
cmake --build build --config RelWithDebInfo --parallel

# Install the resulting artifacts into a specific prefix
cmake --install build --prefix install

# Which will result in the following (on macOS):
exa --tree install --level 2
install
├── bin
│ └── crashpad_handler
├── include
│ └── sentry.h
└── lib
├── cmake
├── libsentry.dylib
└── libsentry.dylib.dSYM
```

[cmake]: https://cmake.org/cmake/help/latest/
torarnv marked this conversation as resolved.
Show resolved Hide resolved

<Alert level="warning" title="Bundling crashpad_handler">

When using the _Crashpad backend_, which is the default on Windows and macOS, the `crashpad_handler` binary has to be shipped alongside the application binary. See the [Crashpad documentation](/platforms/native/configuration/backends/crashpad/) for more information.

</Alert>
5 changes: 5 additions & 0 deletions src/includes/getting-started-primer/native.qt.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<Note>

_Sentry's Qt integration enables automatic reporting of errors, exceptions, and log messages._

</Note>
1 change: 1 addition & 0 deletions src/pages/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ const HIGHLIGHTED_PLATFORMS = [
"java.spring-boot",
"ruby.rails",
"flutter",
"native.qt"
];

const IndexPage = () => {
Expand Down
8 changes: 8 additions & 0 deletions src/platforms/native/guides/qt/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
title: Qt
description: "Learn how to use Sentry with Qt."
categories:
- desktop
- mobile
redirect_from:
- /platforms/qt/
- /platforms/native/qt/
4 changes: 4 additions & 0 deletions src/wizard/native/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,7 @@ sentry_capture_event(sentry_value_new_message_event(
/* message */ "It works!"
));
```

If you're new to Sentry, use the email alert to access your account and complete a product tour.

If you're an existing user and have disabled alerts, you won't receive this email.
47 changes: 47 additions & 0 deletions src/wizard/native/qt.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
---
name: Qt
doc_link: https://docs.sentry.io/platforms/native/guides/qt/
support_level: production
type: framework
---

Install the SDK by downloading the [latest release](https://github.com/getsentry/sentry-native/releases). Next, follow the
instructions in the [_Native SDK Documentation_](/platforms/native/guides/qt/) to build the SDK library.

Import and initialize the Sentry SDK early in your application setup:

```cpp
#include <QtWidgets>
#include <sentry.h>

int main(int argc, char *argv[])
{
sentry_options_t *options = sentry_options_new();
sentry_options_set_dsn(options, "___PUBLIC_DSN___");
sentry_init(options);

// Make sure everything flushes
auto sentryShutdown = qScopeGuard([] { sentry_shutdown(); });

QApplication app(argc, argv);
/* ... */
return app.exec();
}
```
Alternatively, the DSN can be passed as `SENTRY_DSN` environment variable during
runtime. This can be especially useful for server applications.
The quickest way to verify Sentry in your Qt application is by capturing a message:
```c
sentry_capture_event(sentry_value_new_message_event(
/* level */ SENTRY_LEVEL_INFO,
/* logger */ "custom",
/* message */ "It works!"
));
```
torarnv marked this conversation as resolved.
Show resolved Hide resolved

If you're new to Sentry, use the email alert to access your account and complete a product tour.

If you're an existing user and have disabled alerts, you won't receive this email.