系统奇怪的行为()

时间:2014-03-24 06:35:01

标签: c++ qt system

我是所有这些东西的初学者。我试图创建一个打开文件的函数(在Windows中使用Qt),我尝试了QProcess库中的一些函数,但它们无法满足我的需求。所以,我决定使用system()执行文件的功能。问题是系统功能只从我的系统驱动器打开.exe文件和其他文件,并没有打开任何文件 任何其他驱动器。在Qt中有一个内置函数,我可以用它打开任何文件,并为该文件类型分配默认程序。为什么会这样?我做错了什么? 我的代码:

    QString FilePath = openFileDialog.getOpenFileName(this, tr("Open File"),"/home",tr("All Files"));
ui->Label_7->setText("Choose file to open.");
const char *file;
QByteArray bArray;
bArray = FilePath.toLatin1();
file = bArray.data();

system(file);

1 个答案:

答案 0 :(得分:2)

您可以使用QDesktopServices::openUrl函数打开具有合适应用程序的本地文件。 试试这个:

void Widget::open()
{
    QString filename = QFileDialog::getOpenFileName();
    if (!filename.isEmpty())
    {
        QUrl url = QUrl::fromLocalFile(filename);

        QDesktopServices::openUrl(url);
    }
}