title | layout |
---|---|
3. Writing your first application |
docs |
In this chapter we will write a simple QSkinny application on Linux from scratch in C++ with Qt6. As a prerequisite, a supported Qt6 version should be available.
On debian bullseye we need to install these packages
build-essential cmake qtbase6-dev qtbase6-private-dev qtdeclarative6-dev qtdeclarative6-private-dev libqt6svg-dev qt6-shadertools
.
Optional packages for the virtual keyboard are libhunspell-dev libimepinyin-dev
Then we can build and install QSkinny to /opt/qskinny
with the following commands:
$ git clone https://github.com/uwerat/qskinny.git # clone
$ cd qskinny
$ mkdir build && cd build
$ cmake ..
$ cmake --build .
$ sudo cmake --install . --prefix "/opt/qskinny"
Considering that you want to use a specific Qt version that is installed below "/path/to/qt" you have 2 options:
$ cmake .. -DCMAKE_PREFIX_PATH=/path/to/qt
or
$ /path/to/qt/bin/qt-cmake ..
As a next step, we need to write our app. Let’s start with a simple main.cpp
file in a directory myapp
:
#include <QskWindow.h>
#include <QGuiApplication>
int main( int argc, char* argv[] )
{
QGuiApplication app( argc, argv );
QskWindow window;
window.show();
return app.exec();
}
For now this will just create an empty window (the QskWindow
) without any controls.
Next, we need to create a CMakeLists.txt
file in our myapp
directory.
cmake_minimum_required(VERSION 3.27)
project(myapp
VERSION 1.0.0
LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)
find_package(Qt6 REQUIRED COMPONENTS Quick)
find_package(QSkinny REQUIRED)
add_executable(myapp
src/main.cpp)
target_link_libraries(myapp PRIVATE
Qt6::Quick
Qsk::QSkinny)
Now we can compile our app:
$ cd myapp
$ mkdir build && cd build
$ cmake ../ && make
When running myapp it needs to find the skin plugins. Setting QT_PLUGIN_PATH is one option ( see https://doc.qt.io/qt/deployment-plugins.html ):
$ QT_PLUGIN_PATH=/opt/qskinny/plugins ./myapp
This should show just an empty window.
Now that we have our app running, we can add some UI controls to it by extending the main.cpp
file we created earlier.
We will add some additional include directives, and then create a horizontal layout containing two push buttons.
The layout with the two buttons will be shown in the window. Below is the complete updated source file:
#include <QskWindow.h>
#include <QskLinearBox.h>
#include <QskPushButton.h>
#include <QGuiApplication>
int main( int argc, char* argv[] )
{
QGuiApplication app( argc, argv );
auto box = new QskLinearBox( Qt::Horizontal );
/*
some design systems work with transparencies ( f.e Fluent2 )
and we need to have a control providing a solid base color
as bottom layer.
*/
box->setPanel( true );
(void) new QskPushButton( "Button 1", box );
(void) new QskPushButton( "Button 2", box );
QskWindow window;
window.addItem( horizontalBox );
window.show();
return app.exec();
}
Now the app is displaying the two buttons:
That’s it; you just created a QSkinny application from scratch.
For information on how the controls and layouts above behave, see the next chapters.