Seite 1 von 1

move-Funktion mit Qt::tool-Widgets auf 2. Bildschirm

Verfasst: 20. Juni 2008 13:44
von DemonCleaner
Hallo, ich habe mir ein Programm geschrieben, dass beim Start an eine bestimmte Position geschoben werden soll. Da ich das Programm durchgehend benötige und schon genug Einträge in der Taskbar habe, habe ich die Windowflag auf Qt::tool gesetzt.
Die Application wird gestartet, verschoben und angezeigt.
Befinden sich die Koordinaten allerdings ausserhalb des 1. Bildschirms, wird das Fenster nicht angezeigt.
Setze ich die Windowflag nicht, funktioniert alles prima.

Vereinfacht sieht das ganze so aus:

gui.h:

Code: Alles auswählen

#ifndef GUI_H
#define GUI_H

#include <QtGui/QCloseEvent>
#include <QtGui/QGridLayout>
#include <QtGui/QWidget>

class Gui : public QWidget
{
	Q_OBJECT
public:
	Gui();
private:
	QGridLayout *gui_layout;
protected:
	void closeEvent(QCloseEvent *e);
};
#endif
main.cpp:

Code: Alles auswählen

#include <QtGui/QApplication>
#include <QtCore/QDir>
#include <QtCore/QSettings>

#include "gui.h"

int main(int argc, char *argv[])
{
	QApplication app(argc, argv);
	Gui mw;
	mw.setWindowFlags(Qt::Tool);
	mw.show();
	return app.exec();
}

Gui::Gui()
{
	gui_layout = new QGridLayout;
	QSettings settings(QApplication::applicationDirPath()+QDir::separator()+"Setup.ini", QSettings::IniFormat, this);
	setLayout(gui_layout);
	move(settings.value("PosX").toInt(), settings.value("PosY").toInt());
}

void Gui::closeEvent(QCloseEvent *e)
{
	QSettings settings(QApplication::applicationDirPath()+QDir::separator()+"Setup.ini", QSettings::IniFormat, this);
	settings.setValue("PosX", x());
	settings.setValue("PosY", y());
	e->accept();
}
Hätte jemand einen Lösungsvorschlag?