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

Alles rund um die Programmierung mit Qt
Antworten
DemonCleaner
Beiträge: 8
Registriert: 23. Januar 2008 11:18

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

Beitrag 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?
Antworten