在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
对不起,我已经尝试过那里解释的解决方案,但无法让它运行。在我的特定情况下,我认为子系统发挥了作用。
答案 0 :(得分:1)
将 QDesktopServices 与
类似QDesktopServices::openUrl(QUrl::fromLocalFile(localFilePath));
openUrl()
函数可以自定义以实现您自己的调度机制(不适用于您的情况 - 我认为)。