QApplication::setAttribute 和CoreApplication::setAttribute 有什么不同

QApplication::setAttribute 和 QCoreApplication::setAttribute 都是用于设置 Qt 应用程序属性的函数,但它们之间有一些关键的区别,主要取决于你是否使用了 QApplication 类。

QCoreApplication::setAttribute:

void QCoreApplication::setAttribute(Qt::ApplicationAttribute attribute, bool on = true);
  • QCoreApplication 是 Qt 核心模块的一部分,它提供了一些基本的应用程序功能,但不包含 GUI 相关的功能。

  • QCoreApplication::setAttribute 主要用于设置一些全局的属性,如高DPI缩放、OpenGL 使用等。
    这个函数通常在没有 GUI 的应用程序中使用,比如命令行工具或服务。

#include <QCoreApplication>

int main(int argc, char *argv[]) {
    QCoreApplication a(argc, argv);

    // 设置一些全局属性
    QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

    // 其他初始化和应用程序逻辑

    return a.exec();
}

QApplication::setAttribute:

void QApplication::setAttribute(Qt::ApplicationAttribute attribute, bool on = true);
  • QApplication 继承自 QCoreApplication,是专门为 GUI 应用程序设计的,它包含了更多处理图形用户界面的功能。
  • QApplication::setAttribute 除了能够设置一些全局属性,还可以设置与 GUI 相关的属性,例如窗口的外观和行为等。
    这个函数在具有图形用户界面的应用程序中使用,如窗口应用程序。
#include <QApplication>

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);

    // 设置一些全局和 GUI 相关的属性
    QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
    QApplication::setAttribute(Qt::AA_UseDesktopOpenGL);

    // 创建窗口和其他 GUI 元素

    return a.exec();
}

总的来说,如果你的应用程序是一个纯粹的命令行工具或服务,可能只需使用 QCoreApplication::setAttribute。如果你的应用程序有图形用户界面,则应使用 QApplication::setAttribute,因为它包含了更多与 GUI 相关的选项。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值