사용자가 정보를 입력하고 추가 버튼을 클릭하여 정보를 추가하거나 완료 버튼을 클릭하여 프로세스를 완료하는 GUI 응용 프로그램을 만들고 있습니다. 프로세스 출력은 4 개의 텍스트 파일이됩니다. 그래서, 그 각각이 그 파일 중 하나를 만들어 4 개 기능 클래스를 만들었어요 : 때문에 내 초기 연구Qt로 텍스트 파일을 만드는 방법
class RequiredFilesMaker
{
public:
RequiredFilesMaker();
~RequiredFilesMaker();
void a1(float xcor, float ycor, int xnbin, int ynbin , int resolution);
void a2();
void a3();
void a4();
};
, 내가 파일에 데이터를 저장 QTextStream를 사용한다는 것을 이해합니다. 그러나이 편리한 객체를 사용하는 데 문제가 있습니다. 클래스에서 정의 할 수없고 생성자에서 초기화 할 수 없습니다. 나는 다른 사람들이 한 일을보기 위해 모든 문서와 포럼을 점검했다. 하지만, 널리 사용되는 유일한 방법은 함수 내에서 객체를 호출하고 작업을 수행 한 후 데이터 파일을 닫는 것입니다 (필자가 선호하는 파일이 아니므로 사용자가 파일을 열어서 쓰기 만하면됩니다.) 그 위에).
QFile data("output.txt");
if (data.open(QFile::WriteOnly | QFile::Truncate)) {
QTextStream out(&data);
out << "Result: " << qSetFieldWidth(10) << left << 3.14 << 2.7;
// writes "Result: 3.14 2.7 "
}
문제를 해결하는 방법을 알고있는 사람이 있습니까? 나는 다른 변수 안에 (MyMagic)에 모든 정보를 저장하는 새로운 아이디어를 내놓았다 그냥 같은 함수를 호출 : 나는 MyMagic의 종류에 대해 궁금하고,
void RequiredFilesMaker::a1(float b1, float b2, int b3, int b4, int b5){
QFile gs_qfile("abc.dat");
if (!gs_qfile.open(QIODevice::WriteOnly)){
qDebug() <<"Couldn't open the file";
return;
}
QDataStream out(&gs_qfile);
out.setVersion(QDataStream::Qt_4_7);
out << MyMagic;
gs_qfile.flush();
gs_qfile.close();
을하지만.
일반적으로 자동으로 싱글 톤 클래스의 인스턴스를 오히려 나쁜 생각 :
당신은 글로벌 클래스 인스턴스를 제공하는 응용 프로그램에서 인스턴스 메소드를 얻을 수 있습니다. 'QCoreApplication'처럼'main()'함수에서 명시 적으로 인스턴스화하고,'instance()'getter가 사용할 수있게되면 그 인스턴스를 반환하게하고, 그렇지 않으면'nullptr'을 호출하게합니다. –
@KubaOber 더 많은 쿠바를 설명해 주시겠습니까? –