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();
}
- 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