QSettings
Verfasst: 16. März 2005 12:06
Hallo,
beschäftige mich gerade mal mit QSettings und der Möglichkeit, zB die Position des Fensters und dessen Größe zu speichern und dann beim erneuten Starten reinzuladen und dementsprechend darzustellen. Laut Trolltech soll das so aussehen:
void ColorMainWindowImpl::saveSettings()
{
QSettings settings;
settings.insertSearchPath( QSettings::Windows, WINDOWS_REGISTRY );
settings.writeEntry( APP_KEY + "WindowWidth", width() );
settings.writeEntry( APP_KEY + "WindowHeight", height() );
settings.writeEntry( APP_KEY + "WindowX", x() );
settings.writeEntry( APP_KEY + "WindowY", y() );
settings.writeEntry( APP_KEY + "ClipAs", m_clip_as );
settings.writeEntry( APP_KEY + "ShowWeb", m_show_web );
settings.writeEntry( APP_KEY + "View",
colorWidgetStack->visibleWidget() == tablePage );
}
void ColorMainWindowImpl::loadSettings()
{
QSettings settings;
settings.insertSearchPath( QSettings::Windows, WINDOWS_REGISTRY );
int windowWidth = settings.readNumEntry( APP_KEY + "WindowWidth", 550 );
int windowHeight = settings.readNumEntry( APP_KEY + "WindowHeight", 500 );
int windowX = settings.readNumEntry( APP_KEY + "WindowX", 0 );
int windowY = settings.readNumEntry( APP_KEY + "WindowY", 0 );
m_clip_as = settings.readNumEntry( APP_KEY + "ClipAs", CLIP_AS_HEX );
m_show_web = settings.readBoolEntry( APP_KEY + "ShowWeb", TRUE );
if ( ! settings.readBoolEntry( APP_KEY + "View", TRUE ) ) {
colorWidgetStack->raiseWidget( iconsPage );
viewIconsAction->setOn( TRUE );
}
}
Gespeichert und geladen werden die Werte. Diverse Settings, wie ClipAs & ShowWeb werden auch dargestellt, nur die Größe und Position klappt nicht.
Nun die Frage, wie weiss das Programm denn aus den Einträgen windowX, windowY, dass das Fenster diese Größe hat? Sind das Standard-Einträge? Habe auch nirgends gefunden, wo das Fenster mit den entsprechenden Größen initialisiert wird. Im Moment werden auch nicht die Standardwerte 550, 500, 0, 0 benutzt, also findet er die Werte ja und es muss wohl woanders definiert sein, oder? Im Moment nimmt er irgendwas mit 640, 480, 100, 100 oder so!
Könnt Ihr etwas Licht ins Dunkel bringen?
beschäftige mich gerade mal mit QSettings und der Möglichkeit, zB die Position des Fensters und dessen Größe zu speichern und dann beim erneuten Starten reinzuladen und dementsprechend darzustellen. Laut Trolltech soll das so aussehen:
void ColorMainWindowImpl::saveSettings()
{
QSettings settings;
settings.insertSearchPath( QSettings::Windows, WINDOWS_REGISTRY );
settings.writeEntry( APP_KEY + "WindowWidth", width() );
settings.writeEntry( APP_KEY + "WindowHeight", height() );
settings.writeEntry( APP_KEY + "WindowX", x() );
settings.writeEntry( APP_KEY + "WindowY", y() );
settings.writeEntry( APP_KEY + "ClipAs", m_clip_as );
settings.writeEntry( APP_KEY + "ShowWeb", m_show_web );
settings.writeEntry( APP_KEY + "View",
colorWidgetStack->visibleWidget() == tablePage );
}
void ColorMainWindowImpl::loadSettings()
{
QSettings settings;
settings.insertSearchPath( QSettings::Windows, WINDOWS_REGISTRY );
int windowWidth = settings.readNumEntry( APP_KEY + "WindowWidth", 550 );
int windowHeight = settings.readNumEntry( APP_KEY + "WindowHeight", 500 );
int windowX = settings.readNumEntry( APP_KEY + "WindowX", 0 );
int windowY = settings.readNumEntry( APP_KEY + "WindowY", 0 );
m_clip_as = settings.readNumEntry( APP_KEY + "ClipAs", CLIP_AS_HEX );
m_show_web = settings.readBoolEntry( APP_KEY + "ShowWeb", TRUE );
if ( ! settings.readBoolEntry( APP_KEY + "View", TRUE ) ) {
colorWidgetStack->raiseWidget( iconsPage );
viewIconsAction->setOn( TRUE );
}
}
Gespeichert und geladen werden die Werte. Diverse Settings, wie ClipAs & ShowWeb werden auch dargestellt, nur die Größe und Position klappt nicht.
Nun die Frage, wie weiss das Programm denn aus den Einträgen windowX, windowY, dass das Fenster diese Größe hat? Sind das Standard-Einträge? Habe auch nirgends gefunden, wo das Fenster mit den entsprechenden Größen initialisiert wird. Im Moment werden auch nicht die Standardwerte 550, 500, 0, 0 benutzt, also findet er die Werte ja und es muss wohl woanders definiert sein, oder? Im Moment nimmt er irgendwas mit 640, 480, 100, 100 oder so!
Könnt Ihr etwas Licht ins Dunkel bringen?