2012-08-04 4 views
1

저는 첫 번째 GUI 응용 프로그램을 작성했습니다. QSettings를 사용하고 Windows 레지스트리를 사용하는 방법을 배우기 위해 모든 기능이 작동하도록 일부 값을 저장해야합니다. 나는 크기와 위치에 대한 모범을 발견 했으므로 여기에서 무슨 일이 일어나고 있는지 약간의 이해를 가지고 있지만, 어떤 이유로 나는 스스로 시도 할 때 그것을 작동시키지 못합니다. 나는 몇 주 동안이 문제로 고민하고 있으며 레지스트리에 내 자신의 문자열을 추가하는 방법에 대한 좋은 참고 문헌을 찾을 수 없다. 다음은이 문제가 발생하는 데 필요한 모든 관련 코드입니다. 올바른 방향으로 도움이나 의견을 주시면 감사하겠습니다. 또한 나는 Qt 4 나 그와 같은 것을 가지고 있지만,이 경우 나에게 많은 도움이되지는 않았다. 누군가가 좀 더 고급 QT 주제에 대한 좀 더 포괄적 인 기사 또는 일부 관련 기사에 대한 빠른 참조를 가지고 있다면 나는 그 (것)들을 듣기에 흥미가 있고 멀리 주제에 멀리 얻지 않기 위하여, 나는 거기 밖으로 좋은 책의 톤이다는 것을 확실하다.QSettings를 사용하여 QString을 레지스트리에 추가하는 방법

MainWindow.cpp

MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) 
{ 
createActions(); 
createMenus(); 
createMainWidget(); 
createIcons(); 
createDocks(); 
createStatusBar(); 

setMinimumSize(950,600); 
setWindowTitle(tr("Black Ops Toolbox: Vrs. 0.0.0.12.01")); 

QString defaultDirPath = ""; 

readSettings(); 
} 

void MainWindow::readSettings() 
{ 
QSettings settings; 
QPoint pos = settings.value("pos", QPoint(25,25)).toPoint(); 
move(pos); 
QSize size = settings.value("size",QSize(1200,900)).toSize(); 
resize(size); 
QString defaultDirPath = settings.value("defaultDirPath", QString("c:/programfiles/")).toString(); 

} 

void MainWindow::writeSettings() 
{ 
QSettings settings; 
settings.setValue("pos",pos()); 
settings.setValue("size",size()); 
settings.setValue("defaultDirPath", QVariant(QString *defaultDirPath).toString()); 
} 

void MainWindow::closeEvent(QCloseEvent *event) 
{ 
writeSettings(); 
} 

MainWindow.h는

class MainWindow : public QMainWindow 
{ 
Q_OBJECT 

public: 
explicit MainWindow(QWidget *parent = 0); 

protected: 
void closeEvent(QCloseEvent *event); 

private: 
void createActions(); 
void createActionEvents(); 
void createMenus(); 
void createMainWidget(); 
void createIcons(); 
void createDocks(); 
void createStatusBar(); 
void readSettings(); 
void writeSettings(); 

QString *defaultDirPath; 
}; 

답변

1

정말 아직 QSettings를 사용하지 않았지만, documentation에서 코드에서 일부 정보가 그리워 것으로 보인다. 특히

, 당신은 (기본 사용법 섹션에서) 부여해야 조직 이름과 응용 프로그램 이름,

QSettings settings("MySoft", "Star Runner"); 

처럼 QSettings 생성자를 사용하거나 QCoreApplication 설정을 사용하여 다음 기본 QSettings 생성자

QCoreApplication::setOrganizationName("MySoft"); 
QCoreApplication::setOrganizationDomain("mysoft.com"); 
QCoreApplication::setApplicationName("Star Runner"); 
... 
QSettings settings; 

QSettings를 만들려면 다음 방법 중 하나를 시도해 보셨습니까?

+0

예 죄송합니다. main 함수 내에 조직/응용 프로그램 이름을 설정하고 QString defaultDirPath의 경우를 제외하고 내 소프트웨어가 값을 올바르게 저장하고 있는지 확인하기 위해 regedit를 사용했음을 잊었습니다. – Rob

관련 문제