@J.Hilk Hey, Thank you for all of your help. Solved the problem thanks to you!
If there is anyone facing the same issue, solved like this,
Created a source file named "restarter"
restarter.h
#ifndef RESTARTER_H
#define RESTARTER_H
#include <QObject>
class Restarter : public QObject
{
Q_OBJECT
public:
explicit Restarter(QObject *parent = nullptr);
Q_INVOKABLE void makeRestart();
signals:
public slots:
};
#endif // RESTARTER_H
restarter.cpp (note: my application works as a service named "myservice" on system, so I can not restart it as restarting a regular application.)
#include "restarter.h"
#include <QProcess>
Restarter::Restarter(QObject *parent) :
QObject (parent)
{
}
void Restarter::makeRestart()
{
QProcess::execute("sudo service myservice restart");
}
If your application works NOT AS A SERVICE, BUT AN APPLICATION,
restarter.cpp
#include "restarter.h"
#include <QApplication>
#include <QProcess>
Restarter::Restarter(QObject *parent) :
QObject (parent)
{
}
void Restarter::makeRestart()
{
qApp->quit();
QProcess::startDetached(qApp->arguments()[0], qApp->arguments()); //application restart
}
You need to register "restarter.cpp" as a QML registery (I know, stupid sentence)
So you need to insert these lines in main.cpp
#include "restarter.h"
qmlRegisterType<Restarter>("closx.restarter", 1, 0, "Restarter");
and use it on your QML file:
import closx.restarter 1.0
Restarter {
id:restarter
}
Rectangle{
id: restartbg
width: 120
height: 70
radius: 8
color:"black"
anchors.centerIn: parent
z:344
Text{
anchors.centerIn: parent
text:qsTr("Restart") + mytrans.emptyString
font.family:GSystem.myriadproita.name
font.pixelSize: 18
color: "white"
}
MouseArea{
anchors.fill: parent
onClicked: {
restarter.makeRestart()
}
onPressed: {
restartbg.color = "#1c1c1c"
}
onReleased: {
restartbg.color = "black"
}
}
}
Again, thanks to @LeLev and @J-Hilk for everything.