我有一个问题,我认为难以解释而不是回答......我会尝试。
有几个软件可以在终端上运行,具有各种输入参数(-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,但是“通用”方法提示可以),其中一个创建一个Form应用程序但是从命令行开始,并使用给定的命令打开表单。好像没问题。唯一的问题是:在这种情况下,启动后,控制台和GUI都可见,还是只选择一个?
我想要的是能够使用命令行参数重现GUI的行为,因此可以使用命令行参数重现GUI的每个按钮/功能。这主要是为了能够自动化GUI事件的一些测试。附带问题:它是否有任何意义?
我认为涉及一些MVC设计。程序功能与用户界面分离,因此控制台和GUI可以进行相同的控制器调用。我对MVC不太熟悉,但我认为它涉及到这种情况。正确?
我希望一切都清楚。
感谢您的帮助!
MIX
编辑:一个很好的例子可以是VLC。它从众所周知的GUI开始,但它也可以从控制台使用(https://wiki.videolan.org/VLC_command-line_help/)。
答案 0 :(得分:0)
我在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 /控制台的逻辑。顺便说一句,它似乎为应用程序启动部分做了诀窍。
您如何看待这种方法?
很快控制逻辑......