如何使用Qt更改Linux设备的系统时间?

2fjabf4q  于 2023-01-25  发布在  Linux
关注(0)|答案(2)|浏览(555)

我目前正在设计一个用户界面,需要显示当前的日期和时间,也让用户编辑当前的时间和日期后,在设置。
我今天阅读了很多关于这个问题的资料,但是我找不到一个适合我的解决方案。我试图通过创建一个QProcess对象并在我的用户界面所在的linux设备上执行命令来解决QProcess的问题。当我试图设置时间时,我似乎在与“date”命令斗争。
这是我当前使用“date”命令更改Linux设备系统时间的代码。
我的问题是,如果我用“args〈〈....”行注解运行我的程序,它会向我显示当前系统时间的StdOut。但如果我用args运行代码并尝试设置时间,我总是得到相同的错误消息StdError“date:无效的日期““星期一1月23日09:30:17 UTC 2023”“为每一个可能的格式。我已经尝试了许多不同的格式和变化,如何您可以设置时间,但我总是得到相同的错误消息。

QProcess task;
    QString command;
    QStringList args;

    command = "date";
    // I tried many different time formats but all of seem to be invalid

    args << "--set=\"Mon Jan 23 09:30:17 UTC 2023\"";
    task.start(command, args);
    task.waitForFinished();

    QString StdOut = task.readAllStandardOutput();
    QString StdError = task.readAllStandardError();

    ui->lineEdit_13->setText(StdOut);
    ui->lineEdit_14->setText(StdError);

有没有人知道我的问题可能是什么以及如何解决它?我肯定不会那么难改变设备的时间。
提前感谢您的回答:)

x759pob2

x759pob21#

你能不能试试:

args << QStringLiteral("-s")
     << QStringLiteral("Mon Jan 23 09:30:17 UTC 2023");

这可能是报价的问题。
此外,请注意,您需要以足够的访问权限运行应用程序才能修改系统日期。

7gcisfzg

7gcisfzg2#

所以我发现了一个非常非常简单的方法来改变我的显示器的系统时间,我用我的应用程序。我读了很多次,改变系统时间是不可能的纯Qt,但这是一个非常大的谎言。
您根本不需要QProcess。只需注意仅适用于Linux设备
我使用了dateTimeWidget。我只是把它放在应用程序的可见区域旁边,这样我就可以访问它的函数了。
因此,为了更改Qt中的系统时间,我使用了以下代码行

ui->dateTimeWidget->setCTime(jahr_val,monat_val, tag_val, stunde_val, minute_val, sekunde_val, true);

最后一个参数需要为真,才能将您刚刚设置的时间与系统时钟同步。就这么简单。

相关问题