Skip to content

Commit

Permalink
feat: Add initial Qt documentation (#3370)
Browse files Browse the repository at this point in the history
  • Loading branch information
torarnv authored Apr 9, 2021
1 parent ac047e9 commit 51956e7
Show file tree
Hide file tree
Showing 9 changed files with 151 additions and 6 deletions.
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
├── 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/

<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!"
));
```

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.

1 comment on commit 51956e7

@vercel
Copy link

@vercel vercel bot commented on 51956e7 Apr 9, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Successfully deployed to the following URLs:

Please sign in to comment.