2016-05-31 17 views
0

Qt 4.7.1では、ボタンをクリックするとWindowsフォトビューアーを起動しようとしています。ここでVS2010ウィンドウサブシステムにコンソールを表示せずにQtを表示する

は、私は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("G:\\image.png"); 

このコンソールを使用しないで画像を表示するにはどうすればよいですか? 事前に感謝します!

EDIT:このポストはの重複している可能性があり指摘されている: Qt Execute external program

申し訳ありませんが、私は解決策が説明したが、それは動作して得ることができませんでした試みました。私の特別なケースでは、私はサブシステムが役割を果たすと思います。

+0

[Qt外部プログラムを実行する](http://stackoverflow.com/questions/19442400/qt-execute-external-program) – LogicStuff

答えて

1

openUrl()関数が( - 私が思うに、あなたの場合には適用されません)独自のディスパッチメカニズムを実装するためにカスタマイズすることができ

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

のようなものでQDesktopServicesを使用してください。

+0

可能な複製!ありがとうございました! –

関連する問題