本文整理汇总了C++中QFile::permissions方法的典型用法代码示例。如果您正苦于以下问题:C++ QFile::permissions方法的具体用法?C++ QFile::permissions怎么用?C++ QFile::permissions使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QFile
的用法示例。
在下文中一共展示了QFile::permissions方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: open
/*!
Opens this file in \a mode.
Note that only QIODevice::ReadWrite and QIODevice::WriteOnly are supported.
*/
bool KDSaveFile::open( OpenMode mode )
{
setOpenMode( QIODevice::NotOpen );
if ( mode & QIODevice::Append )
{
setErrorString( tr("Append mode not supported.") );
return false;
}
if ( ( mode & QIODevice::WriteOnly ) == 0 ) {
setErrorString( tr("Read-only access not supported.") );
return false;
}
const QFile f( d->filename );
if ( f.exists() && !QFileInfo( d->filename ).isWritable() ) {
setErrorString( tr("The target file %1 exists and is not writable").arg( d->filename ) );
return false;
}
const bool opened = d->recreateTemporaryFile( mode );
if( opened )
setOpenMode( mode );
if( f.exists() )
d->tmpFile->setPermissions( f.permissions() );
//if target file already exists, apply permissions of existing file to temp file
return opened;
}
示例2: run
bool Gcc::run(QString filename)
{
if(!compile(filename))
return false;
QString outputString;
QFileInfo outputFileInfo(m_outputFileName);
QFile scriptFile;
#ifdef Q_OS_WIN32
scriptFile.setFileName(QDir::temp().absoluteFilePath("kiprBatchFile.cmd"));
outputString += "@echo off\n";
outputString += "\"" + QDir::toNativeSeparators(outputFileInfo.absolutePath()) + "\\" + outputFileInfo.fileName() + "\"\n";
outputString += "pause\n";
#else
scriptFile.setFileName(QDir::temp().absoluteFilePath("kiprScript.sh"));
outputString += "#!/bin/bash\n";
outputString += "cd \"" + outputFileInfo.absolutePath() + "\"\n";
outputString += "\"./" + outputFileInfo.fileName() + "\"\n";
#endif
if(!scriptFile.open(QIODevice::WriteOnly | QIODevice::Truncate)) {
qWarning("Gcc::run() Unable to open temp file for writing");
return false;
}
scriptFile.setPermissions(scriptFile.permissions() | QFile::ExeOwner);
scriptFile.write(outputString.toLocal8Bit());
scriptFile.close();
QStringList args;
QFileInfo scriptInfo(scriptFile);
m_outputBinary.setWorkingDirectory(outputFileInfo.absolutePath());
#ifdef Q_OS_WIN32
QString startLine = "start \"" + m_outputFileName + "\" \"cmd /c " +
scriptInfo.absoluteFilePath() + "\"\n";
args << "/k";
m_outputBinary.start("cmd", args);
m_outputBinary.write(startLine.toLocal8Bit());
m_outputBinary.write("exit\n");
#elif defined(Q_OS_MAC)
args << "-a" << "/Applications/Utilities/Terminal.app" << scriptInfo.absoluteFilePath();
m_outputBinary.start("open", args);
#else
args << "-e" << scriptInfo.absoluteFilePath() + " && echo \"\nQuitting in 5 secs...\" && sleep 5";
m_outputBinary.start("xterm", args);
#endif
return true;
}
示例3: s_pintaMenu
/**
\param menu
**/
void PluginBl_BloqConf::s_pintaMenu ( QMenu *menu )
{
BL_FUNC_DEBUG
BlSubForm *sub = (BlSubForm *) sender();
int modo = !sub->editMode();
menu->addSeparator();
QAction * ac = new QAction("Bloqueo Configuracion" , menu);
ac->setObjectName("actionBloqueoConfiguracion");
ac -> setCheckable(TRUE);
QString archivo = g_confpr->value( CONF_DIR_USER ) + sub->fileConfig() + "_" + sub->mainCompany()->dbName() + "_" + QString::number ( modo ) + "_tablecfn.cfn";
QFile file ( archivo );
if (file.permissions() & QFile::WriteOwner) {
ac->setChecked(FALSE);
} else {
ac->setChecked(TRUE);
} // end if
menu->addAction ( ac );
}
示例4: test_ksavefile
void KSaveFileTest::test_ksavefile()
{
QString targetFile;
{
//This will be the file we eventually write to. Yes, I know you
//should never remove the temporaryfile and then expect the filename
//to continue to be unique, but this is a test for crying out loud. :)
KTemporaryFile file;
file.setPrefix("ksavefiletest");
QVERIFY( file.open() );
targetFile = file.fileName();
}
{
//Test basic functionality
KSaveFile saveFile;
saveFile.setFileName(targetFile);
QVERIFY( saveFile.open() );
QVERIFY( !QFile::exists(targetFile) );
QTextStream ts ( &saveFile );
ts << "This is test data one.\n";
ts.flush();
QCOMPARE( saveFile.error(), QFile::NoError );
QVERIFY( !QFile::exists(targetFile) );
QVERIFY( saveFile.finalize() );
QVERIFY( QFile::exists(targetFile) );
QFile::remove(targetFile);
QVERIFY( !QFile::exists(targetFile) );
}
{
//Make sure destructor does what it is supposed to do.
{
KSaveFile saveFile;
saveFile.setFileName(targetFile);
QVERIFY( saveFile.open() );
QVERIFY( !QFile::exists(targetFile) );
}
QVERIFY( QFile::exists(targetFile) );
QFile::remove(targetFile);
QVERIFY( !QFile::exists(targetFile) );
}
{
//Test some error conditions
KSaveFile saveFile;
QVERIFY( !saveFile.open() ); //no filename
saveFile.setFileName(targetFile);
QVERIFY( saveFile.open() );
QVERIFY( !QFile::exists(targetFile) );
QVERIFY( !saveFile.open() ); //already open
QVERIFY( saveFile.finalize() );
QVERIFY( QFile::exists(targetFile) );
QVERIFY( !saveFile.finalize() ); //already finalized
QFile::remove(targetFile);
QVERIFY( !QFile::exists(targetFile) );
}
{
//Do it again, aborting this time
KSaveFile saveFile ( targetFile );
QVERIFY( saveFile.open() );
QVERIFY( !QFile::exists(targetFile) );
QTextStream ts ( &saveFile );
ts << "This is test data two.\n";
ts.flush();
QCOMPARE( saveFile.error(), QFile::NoError );
QVERIFY( !QFile::exists(targetFile) );
saveFile.abort();
QVERIFY( !QFile::exists(targetFile) );
}
QFile file ( targetFile );
QVERIFY( file.open(QIODevice::WriteOnly | QIODevice::Text) );
QVERIFY( file.setPermissions( file.permissions() | QFile::ExeUser ) );
file.close();
{
//Test how it works when the file already exists
//Also check for special permissions
KSaveFile saveFile ( targetFile );
QVERIFY( saveFile.open() );
QVERIFY( QFile::exists(targetFile) );
QFileInfo fi ( targetFile );
#ifndef Q_WS_WIN
// Windows: qt_ntfs_permission_lookup is not set by default in
// qfsfileengine_win.cpp, could change in future Qt versions.
QVERIFY( fi.permission( QFile::ExeUser ) );
#endif
//.........这里部分代码省略.........