Qt 리소스 시스템의 유일한 목적은 실행 파일 자체 내에 데이터를 묶는 것입니다. 실행 파일에 데이터를 통합하지 않으려면 리소스 시스템을 사용하지 않아야합니다. Mac에서
, 당신이 당신의 응용 프로그램 번들에 프로젝트 소스에서 "data.txt로"를 추가,하지만 실행 파일 자체에, 당신의 .pro
파일에 다음을 추가하고자하는 경우 : 위의 감안할 때
mac {
BUNDLE = $$OUT_PWD/$$TARGET$$quote(.app)/Contents
QMAKE_POST_LINK += ditto \"$$PWD/data.txt\" \"$$BUNDLE/Resources/\";
}
을 프로젝트 파일, 파일을 얻기에 유용한 경로에 대한 QCoreApplication::applicationDirPath()
사용 : 위의 예에서
#include <QCoreApplication>
#include <QFile>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
qDebug() << QCoreApplication::applicationDirPath();
QFile data(QCoreApplication::applicationDirPath() + "/../Resources/data.txt");
if (data.open(QIODevice::ReadOnly | QIODevice::Text))
qDebug() << data.readAll();
return 0;
}
에게의 Resources
폴더는 Qt는 자원 정상적 복용으로 할 무관 여자 이름. OS X 응용 프로그램 번들의 이름 지정 규칙 일뿐입니다. 여기서는 Qt 리소스 시스템을 사용하지 않습니다.
Qt 리소스 시스템을 사용하고 QFile
이 아닌 리소스 데이터에 직접 액세스하려는 경우 QResource
클래스는 실행 파일에 번들로 제공되는 리소스에 대한 액세스를 제공합니다.
컨트롤 아래의 코드가 데이터 입력에 ifstream
을 사용하려고한다면 인위적으로 제한되며 수정해야합니다. 그 클래스는 반드시 파일 일 필요는 없지만 어떤 것으로도 백업 될 수 있으므로 istream
을 사용해야합니다. 제어하지 않는 코드 인 경우 QLocalSocket
에 ifstream
을 설정할 수 있습니다.
QResource::data()
to an input stream을 스트림 버퍼를 통해 매핑 할 수 있습니다.
리소스 isCompressed()
인 경우 먼저 임시 영역으로 압축을 풀어야합니다. 압축 해제 단계를 피하기 위해 disable resource compression을 사용할 수도 있습니다. upx과 같은 전체 실행 가능한 압축기를 대신 사용할 수 있습니다. 코드가 실행될 때까지는 모든 압축이 해제되어 사용할 준비가됩니다.
가능한 중복 [? 표준 : iostream과 Qfile을 사용하는 방법 (http://stackoverflow.com/questions/5204335/how-to- : 여기 당신이 그것을 사용하는 방법의 예입니다 – HostileFork
Qt 리소스가 실행 파일 자체로 압축되기 때문에이 작업을 수행하는 유일한 방법은 파일을 임시 폴더에 추출하여 비 Qt 코드에서 사용할 수있는 유일한 방법입니다. – sjdowling
Qt와 비 Qt 코드를 연결하는 함수 또는 클래스를 작성하십시오. 그런 다음 비 Qt 코드에서 해당 함수를 호출합니다 (해당 클래스의 메소드 호출). –