【问题标题】:Console+GUI application using input arguments使用输入参数的控制台+GUI 应用程序
【发布时间】:2014-04-07 21:09:21
【问题描述】:

我有一个我认为比回答更难解释的问题......我会试试的。

有多种软件可以在终端上使用各种输入参数(-h、-a、...)运行,其中一个参数运行软件 GUI。目前,我没有想到任何真正的软件,对不起......我们以my_software为例

> my_software -h
This is my_software version 1.0
Options:
-h    Display this help
-a    Do processing 1
-b    Do processing 2
-g    Start software GUI

所以,如果我从控制台调用软件,我可以让它通过广告输入参数处理 1 或 2。此外,我可以使用-g 启动其令人惊叹的 GUI,然后使用按钮或其他任何方式处理 1 或 2。

问题:如何实现这样的目标?

我在 MS 论坛中看到了一些解决方案(我目前正在使用 C++ 和 VIsual Studio,但“通用”方法提示就可以了),其中一个创建表单应用程序但从命令行开始,并使用给定的命令打开表单。似乎还可以。唯一的问题:在这种情况下,启动后,控制台和 GUI 都是可见的还是只是选定的?

我还想要能够使用命令行参数重现 GUI 的行为,因此 GUI 的每个按钮/功能都可以使用命令行参数重现。这主要是为了能够自动化一些 GUI 事件的测试。附带问题:这有意义吗?

我认为其中涉及到一些 MVC 设计。程序功能与用户界面分离,因此控制台和 GUI 可以进行相同的控制器调用。我对MVC不是很熟悉,但我认为它涉及到这个案例。对吧?

我希望一切都清楚。

感谢您的帮助!

混合

编辑:一个很好的例子可以是 VLC。它从众所周知的 GUI 开始,但也可以从控制台使用 (https://wiki.videolan.org/VLC_command-line_help/)。

【问题讨论】:

标签: testing user-interface console automation


【解决方案1】:

我在 Qt 中做了这样的事情

#include "mainwindow.h"
#include <QApplication>

int RunConsole(int argc, char *argv[])
{
  if(strcmp(argv[1], "-t") == 0)
  {
    printf("Testing!\n");
    return 0;
  }
  else
  {
    printf("Dunno how to process option %s...\n", argv[1]);
    return 1;
  }
}

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

int main(int argc, char *argv[])
{
  int ret;
  if(argc > 1)
  {
    ret = RunConsole(argc, argv);
  }
  else
  {
    ret = RunGUI(argc, argv);
  }
  return ret;
}

目前没有控制 GUI/控制台的底层逻辑。顺便说一句,它似乎对应用程序启动部分有用。

您如何看待这种方法?

控制逻辑很快...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-17
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多