我正在尝试使用QDesktopServices打开一个定义为cpath的目录。
QString openPath = QDir::toNativeSeparators(cpath);
QDesktopServices::openUrl(QUrl(cpath, QUrl::TolerantMode));但是,上面的代码什么也不做。
代码被放入一个函数中,该函数使用connect()绑定到一个按钮。我已经测试了connect函数通过创建一个QMessageBox来工作,该在单击按钮时打开。
connect(openButton, SIGNAL(clicked()), this, SLOT(OpenDirectory()));代码:
void QtReader::OpenDirectory()
{
QString openPath = QDir::toNativeSeparators(cpath);
QDesktopServices::openUrl(QUrl::fromLocalFile( qApp-
ApplicationDirPath()+QDir::separator()+"ReaderArchives")); //current working code
}cpath声明:
QString cpath = qApp->applicationDirPath()+QDir::separator()+"ReaderArchives";头文件
public:
explicit QtReader(QWidget *parent = 0);
~QtReader();
QString cpath, spath, tpath;发布于 2016-01-02 09:53:18
您必须确保您的url被解释为本地文件路径,请尝试如下:
QDesktopServices::openUrl(QUrl::fromLocalFile(cpath));注意,不需要使用QDir::toNativeSeparators(),转换是以这种方式自动完成的。
编辑:
您对cpath的声明是造成您的问题的原因,我不知道您的意思是什么,以及您将解密放在哪里,但我认为您是在声明一个具有另一个作用域的同名cpath的新变量,然后在您的OpenDirectory()中您指的是未初始化的成员QString cpath,该成员尚未被分配给任何值,因此省略您的解密,在构造器中以这种方式为成员cpath分配一个值:
cpath = qApp->applicationDirPath()+QDir::separator()+"ReaderArchives";发布于 2019-05-18 20:57:23
根据QDesktopService::openUrl(.)的文档,它需要一个方案名称,表示本地文件的URL是:file --当您使用QUrl::fromLocalFile(const QString & pathFileName)表单时,这是预先准备好的,但在我看来,您并不是在原始的、不工作的代码中添加所需的file://前缀。
https://stackoverflow.com/questions/34563734
复制相似问题