【问题标题】:is it possible to listen for commandline arguments at runtime for a GUI app in Qt?是否可以在运行时为 Qt 中的 GUI 应用程序侦听命令行参数?
【发布时间】:2015-09-02 15:23:29
【问题描述】:

我正在构建一个应用程序,它读取 URL 链接的文本文件以创建网站缩略图。

我想要的是能够使用 PHP 将 URL 插入到文本文件中,然后调用程序来读取链接并制作缩略图。

我可以在完成处理后关闭应用程序,然后在需要时简单地再次调用它,但我认为如果有很多请求,应用程序将不必要地启动/关闭。

如果我可以通过命令行参数控制应用程序会更好。我不确定这是否可能?

我正在尝试创建一个 while 循环来监听命令行输入

while(std::cin >> urlLink){

    qDebug() << "test";

}

接下来我尝试在 .pro 文件中添加:“CONFIG += console”,但它没有显示任何命令行控制台。

我不知道如何完成我想做的事情。如果你们能帮帮我,我会很高兴的。

所以我的问题是:是否可以有一个通过命令行控制的 GUI 应用程序?我该怎么做呢? (在 Qt 中)

【问题讨论】:

  • 命令行参数仅在应用程序启动时传递,您需要一些其他方式来通知应用程序重新读取文件。或者,您可以让应用程序监视文件并查找更改(例如,新的修改时间戳,或不同的文件大小,或使用您的平台本机文件监视接口)。
  • 所以一个 PHP 程序不断地“馈送”你的程序。 a) 只是在其他程序正在读取文件时向文件中添加行是一个问题,忘记这一点。 b) 为什么你的程序需要 GUI?
  • 但实际上,首先你真的应该检查是否值得将你的程序作为 daemon 运行,因为你需要整天不断的请求才能将你的应用程序变成一个守护进程。您希望程序在几天内每分钟调用几次,还是每天只调用几次?
  • @CantThinkOfAnything 正如 JoachimPileborg 已经说过的,命令行仅在程序启动时才相关。如果你想让某个东西一直运行,你就不能在它运行的时候使用它。但是...每 分钟 多次,只需从 PHP 为每个 URL 单独启动它(并将 URL 作为命令行参数传递,而不是为其创建文件)。
  • 请记住,您需要计划保存结果的方式和位置,以便一个程序实例不会覆盖其他程序实例的结果。

标签: c++ qt command-line command-line-arguments


【解决方案1】:

Joachim 是对的,您混淆了命令行参数,这些参数在程序进入 main() 之前传递给您的程序,以及控制台/命令行/终端输入和输出,这是使用 cin/cout、printf 完成的/scanf 等。您可以使用 cin 和 cout,这将是完全有效的,但 Qt 的方法是使用 QTextStream。请参阅此处进行讨论:Is it possible to use cin with Qt?

我认为它在一个线程中是完全可行的,但是您可能希望将程序拆分为不同的 QThreads,一个线程等待终端输入,然后在读取链接时发出信号,另一个线程处理链接背景。但是,您可以线性执行,即读取链接,处理链接。

【讨论】:

  • 感谢您的回复!现在我已经做到了,以便使用命令行参数执行程序。它处理链接,然后在完成时自行关闭。然后我每次需要它时都会调用它。你给出的答案有点复杂,如果我的程序需要处理更多操作,我肯定会参考它,因为据我所知:每次只有几个调用分钟这个简单的方法就足够了。无论如何,你的答案是正确的,谢谢!
  • 没问题,你就在那儿,很难记住要权衡开发人员的额外复杂性和运行时间,因为这是一种简单、效率较低的方法! QTextStreams 的设计与标准库的 iostreams 非常相似,因此如果您最终试一试,它们应该不会太难。 AFAIK 他们的主要吸引力在于更好地与 Qt 类(如 QString)集成,并且他们尝试在内部处理所有编码问题,即他们会将来自平台本机格式的文本文件格式的数据编码为整个 Qt 使用的 UTF-16 unicode。
  • 我明白了。对于 Qt,QTextStream 似乎绝对是要走的路.. 反对它可能会自找麻烦.. 无论如何你确实是对的,人们有时会忘记权衡事情.. 在这种情况下,它肯定会更好让我保持简单并专注于更重要的编码呵呵:)
猜你喜欢
  • 2021-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-30
  • 2011-02-24
相关资源
最近更新 更多