Qt::FramelessWindowHint bei QDialog ?

Alles rund um die Programmierung mit Qt
Antworten
-=Freaky=-
Beiträge: 503
Registriert: 29. Dezember 2006 22:54
Wohnort: HL

Qt::FramelessWindowHint bei QDialog ?

Beitrag 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
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag 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?
-=Freaky=-
Beiträge: 503
Registriert: 29. Dezember 2006 22:54
Wohnort: HL

Beitrag 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
Dateianhänge
test.rar
komplettes, unfertiges projekt
(4.94 KiB) 143-mal heruntergeladen
WIN.rar
auch unfertig, aber so soll es erstmal aussehen
(1.44 KiB) 149-mal heruntergeladen
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag 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...
-=Freaky=-
Beiträge: 503
Registriert: 29. Dezember 2006 22:54
Wohnort: HL

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