Qt在VS2010 Windows子系统上显示图像而不显示控制台

时间:2016-05-31 07:34:48

标签: c++ qt

在Qt 4.7.1中,当我点击按钮时,我正在尝试启动Windows Photo Viewer。

这是我在VS2010中设置的演示项目:

// Container.h
#pragma once

#include <QtCore/QtCore>
#include <QtGui/QtGui>

#include <cstdlib>
class Container : public QObject{
    Q_OBJECT

public:
    QPushButton* m_button;

    Container(){
        m_button = new QPushButton("Open Image");
        bool status = connect(m_button, SIGNAL(clicked()), this, SLOT(onButtonClicked()));
    }

    public slots:
    void onButtonClicked(){

        // works, with console popup:
         system(<path to image>);

        // doesn't work:
        // QProcess::execute(<path to png>);
    }

};

和主文件:

// Main.cpp
#include "stdafx.h"
#include "Container.h"
int main(int argc, char* argv[])
{
 QApplication app(argc, argv);

 Container c;

 c.m_button->show();

return app.exec();
}

我的子系统设置为Windows,因为我不希望使用后台控制台:

现在问题。我想在不显示控制台窗口的情况下显示图像。调用system()会短暂打开一个控制台,关闭它然后显示图像。示例调用如下:

system("G:\\image.png");

那么如何在没有此控制台的情况下显示图像? 非常感谢提前!

编辑:有人指出这篇文章可能与以下内容重复: Qt Execute external program

对不起,我已经尝试过那里解释的解决方案,但无法让它运行。在我的特定情况下,我认为子系统发挥了作用。

1 个答案:

答案 0 :(得分:1)

QDesktopServices

类似
QDesktopServices::openUrl(QUrl::fromLocalFile(localFilePath));

openUrl()函数可以自定义以实现您自己的调度机制(不适用于您的情况 - 我认为)。