mar3 Temat założony przez niniejszego użytkownika |
[Qt]Czyszczenie labela z Pixmapy » 2013-09-28 23:54:52 Witam, Mam problem pisze program lupa i okno odpowiadające za lupę mam przeźroczyste i w nim tylko label do którego ładuje QPixmape. Na czas robienia screenshota potrzebuje mieć zupełnie nie widoczne więc chciałem wyczyścić label, ale to nie działa. lupaFrame::lupaFrame( QWidget * parent ) : QFrame( parent ) , ui( new Ui::lupaFrame ) { Qt::WindowFlags flags = windowFlags(); flags ^= Qt::WindowStaysOnTopHint; setStyleSheet( "background:transparent;" ); setAttribute( Qt::WA_TranslucentBackground ); flags ^= Qt::FramelessWindowHint; flags &= Qt::FramelessWindowHint; setWindowFlags( flags ); show(); activateWindow(); timer = new QTimer( this ); connect( timer, SIGNAL( timeout() ), this, SLOT( lupaUpdate() ) ); timer->start( 100 ); }
void lupaFrame::lupaUpdate() { originalPixmap = QPixmap(); POINT cursorPos; GetCursorPos( & cursorPos ); ui->widokLabel->clear(); originalPixmap = QPixmap::grabWindow( QApplication::desktop()->winId() ); int x =( int ) cursorPos.x - ui->widokLabel->size().width() / 4; int y =( int ) cursorPos.y - ui->widokLabel->size().height() / 4; QPixmap tempPixmap = originalPixmap.copy( QRect( QPoint( x, y ), ui->widokLabel->size() / 2 ) ); ui->widokLabel->setPixmap( tempPixmap.scaled( tempPixmap.size().width() * 2, tempPixmap.size().height() * 2 ) ); }
|
|
Mrovqa |
» 2013-09-29 13:47:27 Co dokładnie się dzieje? Kawałek powiększonego screenshoota jest brany pod uwagę przy kolejnym screenshoocie? Jeśli tak, to prawdopodobnie metoda clear() nie renderuje od razu zmian (co ma jakiś sens), więc na ekranie pozostaje jeszcze stara zawartość. Opisz twój problem bardziej szczegółowo i zrozumiale. |
|
mar3 Temat założony przez niniejszego użytkownika |
» 2013-09-29 15:29:34 Kawałek powiększonego screenshoota jest brany pod uwagę przy kolejnym screenshoocie? |
Dokładnie o to chodzi. Dopisałem ui->widokLabel->repaint(); , wtedy clear działa, ale ta lupa miga. Edit: Czy ktoś wie jak zrobić, żeby lupa nie migała? |
|
mar3 Temat założony przez niniejszego użytkownika |
» 2013-09-30 21:06:59 |
|
akwes |
» 2013-09-30 21:28:58 |
|
mar3 Temat założony przez niniejszego użytkownika |
» 2013-10-01 16:54:43 Przecież to właśnie ten QLabel to lupa, który jest jako oddzielne okno. Do niego (tego QLabela) ładowany jest powiększony fragment screenshota (QPixmap). Znikanie i pojawianie się tego QLabela jest potrzebne natychmiast żeby grabWindow() go nie widziało w sensie był screenshot bez tego powiększonego fragmentu czyli QLabela, a użytkownik ma cały czas widzieć ten QLabel, czyli lupę. |
|
DejaVu |
» 2013-10-17 11:54:15 Rozwiązałeś problem mrugania lupy? |
|
« 1 » |