精华内容
下载资源
问答
  • 1. 首先展示一段创建工程项目时都会自动创建的代码 /* QApplication 版 */ int main(int argc, char *argv[]) { QApplication a(argc, argv); ...#define RestartExitCode 666 // 定义重启的退

    1. 首先展示一段创建工程项目时都会自动创建的代码

    /* QApplication 版 */
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        
        MainWindow w;
        w.show();
    
        return a.exec();    
    }
    

    2. 关于QApplication 包含接口 exit

    调用方式

    #define RestartExitCode 666 // 定义重启的退出码
    
    
    qApp->exit(RestartExitCode); // 调用接口, 退出码为RestartExitCode 
    
    
    /* QApplication 版 */
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        
        MainWindow w;
        w.show();
    
        int exitCode = a.exec(); // 接受接口的退出码信息
        if (RestartExitCode == exitCode) 
        {
            QProcess::startDetached(qApp->applicationFilePath(), QStringList());
            return 0;
        }
        return exitCode;
    }
    

    3. 附带Qt for android重启方式

    
    工程文件添加 
    android {
        QT += androidextras
    }
    
    头文件include 时加ifdef判断, 否则mingw编译时不支持
    #ifdef Q_OS_ANDROID
    #include <QtAndroid>
    #endif
    
    /* 处理退出的退出码, 判断退出码是否是我们预定的重启码 */
    int exitHandle(int exitCode) 
    {
        /* 是否需要重启 */
        if (RestartExitCode != exitCode) 
            return exitCode;
    #ifdef Q_OS_ANDROID
        auto activity = QtAndroid::androidActivity();
        auto packageManager = activity.callObjectMethod("getPackageManager","()Landroid/content/pm/PackageManager;");
        auto activityIntent = packageManager.callObjectMethod("getLaunchIntentForPackage","(Ljava/lang/String;)Landroid/content/Intent;",activity.callObjectMethod("getPackageName","()Ljava/lang/String;").object());
    auto pendingIntent = QAndroidJniObject::callStaticObjectMethod("android/app/PendingIntent", "getActivity","(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;",activity.object(), jint(0), activityIntent.object(),QAndroidJniObject::getStaticField<jint>("android/content/Intent","FLAG_ACTIVITY_CLEAR_TOP"));
    auto alarmManager = activity.callObjectMethod("getSystemService","(Ljava/lang/String;)Ljava/lang/Object;",QAndroidJniObject::getStaticObjectField("android/content/Context","ALARM_SERVICE","Ljava/lang/String;").object());
    alarmManager.callMethod<void>("set","(IJLandroid/app/PendingIntent;)V",QAndroidJniObject::getStaticField<jint>("android/app/AlarmManager", "RTC"),jlong(QDateTime::currentMSecsSinceEpoch() + 10), pendingIntent.object()); //QDateTime::currentMSecsSinceEpoch() + 100
    
    #else
        QProcess::startDetached(qApp->applicationFilePath(), QStringList());
    #endif
        return 0;
    } 
    
    
    /* 使用 */
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        
        MainWindow w;
        w.show();
    
        return exitHandle(a.exec());    
    }
    

     

    展开全文
  • 今天小编就为大家分享一篇关于嵌入式Linux重启QT应用程序的简单办法(基于QT4.8 qws),小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • LinuxQT程序打包

    2020-09-05 15:22:31
    目的:将Linux下自己写好的程序进行发布或者拷贝到其他电脑上运行。 工具:patchelf cmake linuxdeploy 安装patchelf软件 sudo apt install patchelf 安装cmake软件 sudo apt install cmake 编译QT的环境...

    目的:将Linux下自己写好的程序进行发布或者拷贝到其他电脑上运行。

     

    工具:patchelf  cmake  linuxdeploy

     

    1. 安装patchelf软件

    sudo  apt  install  patchelf

    1. 安装cmake软件

    sudo  apt  install  cmake

    1. 编译QT的环境变量,把环境变量写入~/.bashrc中,然后执行source命令,让其立即生效不需要重启

    在bashrc文件中添加以下内容:

    #add QT ENV

    export PATH=/home/humboldt/Qt5.10/5.10.0/gcc_64/bin:$PATH

    export LD_LIBRARY_PATH=/home/humboldt/Qt5.10/5.10.0/gcc_64/lib:$LD_LIBRARY_PATH

    export QT_PLUGIN_PATH=/home/humboldt/Qt5.10/5.10.0/gcc_64/plugins:$QT_PLUGIN_PATH

    export QML2_IMPORT_PATH=/home/humboldt/Qt5.10/5.10.0/gcc_64/qml:$QML2_IMPORT_PATH

    1. 用git 工具从github网站下载linuxdeployqt安装文件,这里注意,网上其他文章提到下载编译好的文件,我这里不推荐使用,编译好的文件我下载安装过,打包文件时会报错,这是用编译好的文件安装后的报错内容:

    ERROR:This host system is too new 等信息

    处理方式:通过从github上下载源文件进行修改编译方式

    执行如下命令下载源文件:

    git  clone  https://github.com/probonopd/linuxdeployqt.git --depth=1

     

    1. 修改编译源文件,进入到下载的linuxdeployqt文件夹中,进入tools/linuxdeployqt目录下的main.cpp文件中

    将如下内容注释掉

    1. 编译修改好的源文件,进入到linuxdeployqt目录下

    cmake  CMakelists.txt

    make

     

    1. 将编译好的linuxdeployqt文件拷贝到/usr/local/bin文件中。编译好的linuxdeployqty源文件文件在linuxdeployqt/tools/linuxdeployqt中,cp 到/usr/local/bin文件中

    sudo  cp  linuxdeployqt/tools/linuxdeployqt/ linuxdeployqt  /usr/local/bin

    执行linuxdeployqt  -version命令查看是否安装成功

    1. 编译一个文件试试,QT中写好程序编译成release版,然后将可执行文件拷贝到一个空文件夹中,执行下面命令

    linuxdeployqt  xxxx  -appimage(xxxx是需要编译的可执行文件)

    将整个文件夹拷贝到其他电脑运行 ./AppRun 看是否成功

     

    提供一下上传资料的地址:

    https://download.csdn.net/download/shetougong/12816837

    资料中有两份文件,一份是源文件也就是我文章中说的需要自己手动注释些内容然后用camke、make工具编译,还有一份是github上编译好的文件,不建议使用

     

    展开全文
  • 应用软件一般都有这样的业务需求:当有新版本的APP,则程序就需要执行更新,更新完毕后...在程序中,可以通过QT的线程库函数来重启,也可以简单的调用外部脚本,完成重启的工作。qApp->closeAllWindows();sys...

    应用软件一般都有这样的业务需求:

    当有新版本的APP,则程序就需要执行更新,更新完毕后(所谓的更新大多就是以覆盖的方式),不需要关机,而是应用程序自己重新启动即可。

    查了网上一些资料,描写得非常复杂,还不如创建一个脚本,批处理完成我的工作这样简单、快捷和粗暴。

    在程序中,可以通过QT的线程库函数来重启,也可以简单的调用外部脚本,完成重启的工作。qApp->closeAllWindows();system("/opt/app/restart_app.sh");

    这里看到,restart_app.sh就是一个外部脚本。

    外部脚本包含如下内容:#!/bin/shkillall -9 my_appecho "restart my_app!"#close backlightecho 0 > /sys/class/backlight/backlight/brightness/opt/app/my_app -qws -nomouse -font wqy-microhei &

    当执行该脚本时,首先会调用killall -9 my_app关闭当前进行中和我的app名称一样的进程,然后关闭背光,让LCD熄灭,最后,重新启动app,并将app放在后台运行。

    这样就简单的完成了app的重启动作。

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对网页设计的支持。如果你想了解更多相关内容请查看下面相关链接

    展开全文
  • 应用软件一般都有这样的业务需求:当有新版本的APP,则程序就需要执行更新,更新完毕后...在程序中,可以通过QT的线程库函数来重启,也可以简单的调用外部脚本,完成重启的工作。qApp->closeAllWindows();sys...

    应用软件一般都有这样的业务需求:

    当有新版本的APP,则程序就需要执行更新,更新完毕后(所谓的更新大多就是以覆盖的方式),不需要关机,而是应用程序自己重新启动即可。

    查了网上一些资料,描写得非常复杂,还不如创建一个脚本,批处理完成我的工作这样简单、快捷和粗暴。

    在程序中,可以通过QT的线程库函数来重启,也可以简单的调用外部脚本,完成重启的工作。

    qApp->closeAllWindows();

    system("/opt/app/restart_app.sh");

    这里看到,restart_app.sh就是一个外部脚本。

    外部脚本包含如下内容:

    #!/bin/sh

    killall -9 my_app

    echo "restart my_app!"

    #close backlight

    echo 0 > /sys/class/backlight/backlight/brightness

    /opt/app/my_app -qws -nomouse -font wqy-microhei &

    当执行该脚本时,首先会调用killall -9 my_app关闭当前进行中和我的app名称一样的进程,然后关闭背光,让LCD熄灭,最后,重新启动app,并将app放在后台运行。

    这样就简单的完成了app的重启动作。

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

    展开全文
  • Linux下解决QT应用程序中不能输入中文的问题1. 在GitHub下载fcitx插件源码2.修改CMakeLists.txt3.编译源码4.修改profile文件5.重启机器6.源码下载 1. 在GitHub下载fcitx插件源码 地址:...
  • QT程序占用内存过高

    万次阅读 2015-05-27 09:38:19
     最近正在测试写的QT应用程序,QT程序运行在S3C2440板子上的linux系统中,测试的过程中发现一个奇怪的问题,QT程序占用内存一次比一次大。比如第一次开机QT应用程序运行内存为30M,在运行一段时间后增加到33M,此时...
  • 一个简单的Free Pascal程序,带有GUI(qt5),用于GNU / Linux,可在指定时间后自动创建声音信号或关闭电源/重新启动系统。 要创建声音信号,请使用paplay实用程序(PulseAudio)。确保已从存储库中安装了pulseaudio...
  • 程序注册为systemd service进程管理交由系统管理,实现程序的异常退出重启和开机自启动。 编写systemctl管理的服务脚本,一般以.service结尾 配置文件一般分为3个区块(Unit、Service、Install),每个区块包含...
  • qt控制window系统的关机重启Linux等其余设备需调用不同系统的api函数去操作,本文只介绍基于windows系统环境。 二、环境 win8系统,qt5.7 三、正文 我的用法是在退出程序是询问是否要关机 void MainWindow::...
  • 安装完QT5.9.1,机器重启后,运行编译出的程序,出现:./a.out: /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version 'Qt_5.9' not found (required by ./a.out) 首先,我新的QT5.9安装在 /opt/Qt5.9.1/。先...
  • qtcreator附加到进程进行调试时,程序一闪而过,调试结束,这需要修改如下配置文件 1.找到etc/sysctl.d/10-ptrace.conf配置文件 2.打开配置文件,将如下配置项改为0 重启电脑,再次附加到进程就可以了 ...
  • 用户从程序界面上输入倒计时的事件名称,选择倒计时的日期和时间后,点“开始倒计时”,程序开始倒计时,并实时显示...要求:倒计时事件只要没有更新或清除,退出重启程序后,该倒计时事件应正常工作 尽量是Linux下的
  • Qt程序无法输入中文的问题一.问题二.原因三.解决方法1.QtCreator本身的编辑器不能输入中文1.1安装fcitx-libs-qt或fcitx-libs-qt51.2将上述文件拷贝至Qt安装目录的platforminputcontexts文件夹下:1.3赋予权限:1.4 ...
  • Qt编写守护进程

    2019-03-02 14:56:06
    则需要想一些办法能够让程序死了能够活过来,在嵌入式linux上,大部分会采用看门狗的形式来处理,程序打开看门狗驱动后,定时喂狗,一旦超过规定的时间,则硬件软复位等。这种方式相对来说比较可靠,如果需要在普通...
  • 最近使用qt写了一个telnet的mud客户端,支持别名和简单触发器,连接部分有点小bug,有时连接不了,重启程序即可,windows下qt各个版本都可以,Linux下要把一些telnet库里的枚举值改为常量才可编译,中文会乱码。...
  • Qt 实现桌面雪花飘落

    千次阅读 2013-12-25 12:28:20
    这两天无意发现有人写了VC等开发的桌面雪花飘落的程序, 我也写了一个, 算是也过上了剩蛋吧! 代码很简单, 贴个主要的实现过程吧. 理应支持windows和linux桌面版的, 但是linux下就暂时不测试了. 懒得重启. 有空测试...
  • 用户从程序界面上输入倒计时的事件名称,选择倒计时的日期和时间后,点“开始倒计时”,程序开始倒计时,并实时显示在...要求:倒计时事件只要没有更新或清除,退出重启程序后,该倒计时事件应正常工作 尽量是Linux下的
  • #linux触屏无响应驱动出现EPIPE错误 使用的触屏设备是egalax...出现问题时触屏没有反应,hexdump /dev/input/event0也没有输出,但是重启QT程序后正常。问题很难复现,复现后也获取不到多少有用信息,后来直接将触屏...
  • linux 原生迅雷

    2015-10-21 10:47:43
    迅雷版本是1.0.31,包含数个linux原生二进制程序,建议双击安装包进行安装,它还要额外的pyQt5图形库,会自动从ubuntu仓库下载. 第一次先不要登陆,先要设置.启动迅雷软件->菜单栏->文件->设置 ->挂载->添加下载目录,...
  • 1.基本信息 NFS Server IP 192.168.0.10 PC机nfs的根目录为/home/s3c2410/nfs ...将随板光盘/linux/nfs中的文件系统nfs-qt-micro-mingui.tar.gz解压到/home/s3c2410/nfs目录下 2.重启nfs服务 /etc/init.d/nfs
  • 最近一段时间在使用明远智睿的IMX6Q开发板开发qt程序,中间遇到一些问题,总结下来为自己提个醒,也方便有同样问题的朋友找到答案。 首先,我所用的linux内核版本是2.6.xx的,后面3.10.7的应该会加入许多新东西,...
  • qt编译,加载代码后如果不能运行,可以尝试关闭再重启。 用<>包含系统的头文件,用“”包含自定义的头文件。 system 在C语言中需要包含头文件<stdlib.h>. 功能:在函数内部调用外部程序。 不同系统...
  • 最近把linux的rtp程序移植到windows上玩,结果出错了, 查到最后发现是没办法创建socket,使用qt的都没问题呢啊... 然后再查,发现使用socket()这个底层API是不成功的, 然后再查,发现是LSP被破坏了,修复下就好... 打开...
  • 9.7.2 Qt for Android开发的程序及其破解方法 9.8 本章小结 第10章 Android程序的反破解技术 10.1 对抗反编译 10.1.1 如何对抗反编译工具 10.1.2 对抗dex2jar 10.2 对抗静态分析 10.2.1 代码混淆技术 10.2.2 NDK保护...
  • 在移植 Qt 之后,做了一个 hello world 的 Qt 程序测试一下,发现运行的速度相当慢,完全无法忍受。后来问一个大神,大神听说我用的 ext4 ,差点就给我跪了。 后来我就转换移植了一类根文件系统比较了一番,发现 ...
  • Qt程序嵌入的浏览器中的网页中的文本框等控件的输入。 迷你模式,界面大小随意设置,采用布局自使用任何分辨率。 纯数字键盘模式,自由控制弹出完整输入法面板和数字键盘面板,只需要对控件设置属性即可。例如ui->...

空空如也

空空如也

1 2
收藏数 31
精华内容 12
关键字:

linuxqt程序重启

linux 订阅