Seite 1 von 1

Qt::FramelessWindowHint bei QDialog ?

Verfasst: 11. Februar 2007 20:01
von -=Freaky=-
hi,
ich benutze in meiner "hauptklasse" (abgeleitet von QWidget) eine klasse, die eigentlich von QMainWindow abgeleitet ist. da das aber nicht funktioniert (fenster ist nicht zu sehen), ist sie nun von QDialog abgeleitet.
das problem ist, dass ich ursprünglich im konstruktor dieser klasse dem QMainWindow-konstruktor Qt::FramelessWindowHint übergeben habe. dies funktioniert aber nicht für QDialog.
außerdem haben sämtliche move()-aufrufe keinerlei auswirkungen, das fenster bleibt in der mitte des bildschirms.
hier mal der wichtigste code:

Code: Alles auswählen

WIN::WIN( QWidget *parent, const QString &msg, const int sec, const int size)
: QDialog( parent, Qt::FramelessWindowHint )
{
	i = 0;
	sek = sec;

	s = size;
	ms = 10;
        [...]
	move( dw.width() - ( s + 25 ), dw.height() ); //dw: QDesktopWidget
	setMinimumSize( s, s );
	setMaximumSize( s, s );
	connect( &timer, SIGNAL( timeout() ), this, SLOT( moveUp() ) );
	timer.start( ms );
}

void WIN::moveUp()
{
	if( ( dw.height() - i ) > ( dw.height() - s ) )
	{
		i++;
		move( dw.width() - ( s + 25 ), dw.height() - i );
	}
	else
	{
		i++;
		timer.stop();
		timer.disconnect();
		connect( &timer, SIGNAL( timeout() ), this, SLOT( moveDown() ) );
		timer.setInterval( ms );
		QTimer::singleShot( (sek * 1000) - ms, &timer, SLOT( start() ) );
	}
}

void WIN::moveDown()
{
	if( dw.height() > pos().y() )
	{
		i--;
		move( dw.width() - ( s + 25 ), dw.height() - i );
	}
	else
		emit done();
}
also meine fragen:
- muss ich diese klasse von QDialog ableiten?
- wenn ja, welche WindowFlags brauche ich, um denselben effekt wie Qt::FramelessWindowHint bei QMainWindow zu erhalten?
- warum wird das fenster nicht verschoben?

hoffe ihr könnt mir helfen. danke schonmal!

mfg,
julian

Verfasst: 11. Februar 2007 20:08
von upsala
Du mußt weder von QDialog noch von QMainWindow ableiten, leite halt einfach von QWidget ab, oder was willst du überhaupt damit machen?

Verfasst: 11. Februar 2007 20:38
von -=Freaky=-
ok, ist irgendwie schwer zu erklären (für mich), ich hängs einfach mal an.
test.rar ist das ganze (nicht annährend fertige) "projekt", WIN.rar ist diese eine klasse in ner art demo-anwendung, wo es funktioniert.
wenn du den inhalt von WIN.rar kompilierst, siehst du, wie es aussehen soll.
im projekt in test.rar siehst du, wie es nicht funktioniert. :)

danke für den hilfeversuch trotz meiner problembeschreibung. :)

mfg,
julian

Verfasst: 12. Februar 2007 20:26
von upsala
Ich habe keine Ahnung warum es nicht funktioniert. Aber ich finde deinen Code auch sehr verwirrend. Du leitest z.B. von QWidget ab, gibst es auch als Parent an, stellst es aber nicht einmal dar...

Verfasst: 12. Februar 2007 20:36
von -=Freaky=-
wie "ich stelle es nicht einmal dar" ?
das der code verwirrend ist glaube ich, einfach drauflosgetippt, kein bisschen strukturiert. aber das da versteh ich nicht. sorry...anfänger.

mfg,
julian