c++ - 带有可选图形用户界面的 Qt 应用程序

标签 c++ qt qtgui qtcore qapplication

我打算使用 Qt 编写一些图像处理程序,我希望它能够在非图形用户界面模式(守护进程模式?)下运行。我受到 VLC 播放器的启发,它是“典型的”GUI 程序,您可以在其中使用 GUI 对其进行配置,但是当它在没有 GUI 的情况下运行时,您也可以在 non-gui 选项中运行它。然后它使用一些在 GUI 模式下创建的配置文件。

问题是这样的程序应该怎么设计?应该是一些程序核心,它独立于 GUI 并且取决于它与 GUI 界面连接的选项?

最佳答案

是的,您可以使用 QCommandLineParser 为二进制文件使用“headless”或“gui”选项.请注意,它仅从 5.3 开始可用,但如果您仍然不使用它,则在主要系列中的迁移路径非常顺利。

main.cpp

#include <QApplication>
#include <QLabel>
#include <QDebug>
#include <QCommandLineParser>
#include <QCommandLineOption>

int main(int argc, char **argv)
{
    QApplication application(argc, argv);
    QCommandLineParser parser;
    parser.setApplicationDescription("My program");
    parser.addHelpOption();
    parser.addVersionOption();

    // A boolean option for running it via GUI (--gui)
    QCommandLineOption guiOption(QStringList() << "gui", "Running it via GUI.");
    parser.addOption(guiOption);

    // Process the actual command line arguments given by the user
    parser.process(application);
    QLabel label("Runninig in GUI mode");
    if (parser.isSet(guiOption))
        label.show();
    else
        qDebug() << "Running in headless mode";

    return application.exec();
}

主程序

TEMPLATE = app
TARGET = main
QT += widgets
SOURCES += main.cpp

构建并运行

qmake && make && ./main
qmake && make && ./main --gui

用法

    Usage: ./main [options]
My program

Options:
  -h, --help     Displays this help.
  -v, --version  Displays version information.
  --gui          Running it via GUI.

关于c++ - 带有可选图形用户界面的 Qt 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23844867/

相关文章:

c++ - 函数指针将参数强制转换为 void

c++ - static const char * - 已定义但未使用

c++ - 我可以用 QTimer 代替 QThread 吗?

python - 如何设置QTableWidget的列文本格式?

python-3.x - PyQt5 - 导入 QtWidgets QtGui 时出错

c++ - 使用派生类实例作为默认参数值

c++ - google mock - 如何在变量名即标识符上进行 EXPECT_CALL

C++ 模板成员函数已定义为相同类型

linux - linux 的 Qt SDK 安装程序的源代码在哪里?

c++ - QWizardPages 保持自己的最小尺寸