胡萝贝୧⍤⃝? 2024-12-01 18:26 采纳率: 46.7%
浏览 132
已结题

开机logo到Qt应用起来会黑屏将近两秒时间

我现在是用rk3568,Linux系统,4.19内核。禁用Framebuffer Console support 保持Logo的显示,直至Qt应用的运行。然后在Qt运行起来的时候会有一秒多的黑屏,想问一下需要修改哪里能让logo一直显示到Qt应用运行起来?

  • 写回答

36条回答 默认 最新

  • 阿里嘎多学长 2024-12-01 18:26
    关注
    获得0.15元问题酬金

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    解决方案

    你遇到的问题是,开机logo到Qt应用起来会有近两秒的黑屏时间。这可能是由于Qt应用的初始化和窗口创建过程中需要一些时间,导致的。

    为了解决这个问题,你可以尝试以下几点:

    1. 优化Qt应用的初始化过程:你可以尝试使用Qt的异步初始化机制,例如使用QApplication::setAttribute(Qt::AA_EnableHighDpiScaling)来启用高 DPI 缩放支持。
    2. 使用Qt的Splash Screen:你可以使用Qt的Splash Screen来显示一个logo或其他图像,直到Qt应用真正启动。这样可以减少黑屏时间。
    3. 禁用Qt的窗口创建:你可以尝试禁用Qt的窗口创建,直到Qt应用真正启动。例如,你可以使用QApplication::setAttribute(Qt::AA_DisableWindowContextHelpButton)来禁用窗口创建。
    4. 优化Linux系统的性能:你可以尝试优化Linux系统的性能,例如禁用不必要的服务、优化内存分配等。

    以下是一个简单的示例代码,演示如何使用Qt的Splash Screen:

    #include <QApplication>
    #include <QSplashScreen>
    
    int main(int argc, char *argv[]) {
        QApplication app(argc, argv);
    
        QSplashScreen *splash = new QSplashScreen;
        splash->show();
    
        // 初始化Qt应用
        app.processEvents();
    
        // 显示logo
        splash->showMessage("Loading...", Qt::AlignCenter);
    
        // 等待Qt应用真正启动
        QEventLoop loop;
        QTimer::singleShot(2000, &loop, SLOT(quit()));
        loop.exec();
    
        // 关闭Splash Screen
        splash->finish();
    
        return app.exec();
    }
    

    这个示例代码将显示一个logo,直到Qt应用真正启动。

    评论

报告相同问题?

问题事件

  • 系统已结题 12月9日
  • 创建了问题 12月1日