move-Funktion mit Qt::tool-Widgets auf 2. Bildschirm
Verfasst: 20. Juni 2008 13:44
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:
main.cpp:
Hätte jemand einen Lösungsvorschlag?
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
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();
}