Anfängerproblem - screenshot auf Knopfdruck machen

Verschiedenes zu Qt
Antworten
krummnagel
Beiträge: 10
Registriert: 31. Oktober 2008 22:36

Anfängerproblem - screenshot auf Knopfdruck machen

Beitrag von krummnagel »

Hallo ich habe folgendes Problem. Vorsicht blutiger Anfänger :)
mein codeauschnitt(macht einen screenshot und speichert diesen):

Code: Alles auswählen

...
QDesktopWidget* desktop = QApplication::desktop();
    QWidget* w = desktop->screen(0);
    QPixmap *snapshot=new QPixmap;
	snapshot->grabWindow(w->winId(), 0, 0, -1, -1);
	QString saveto = "C:\\screenshot.png";
	snapshot->save(saveto);
...
nun wollte ich das der screenshot erst per Knopfdruck gemacht wird und hab an sowas ähnliches gedacht:

Code: Alles auswählen

...

QDesktopWidget* desktop = QApplication::desktop();
QWidget* w = desktop->screen(0);
QPixmap *snapshot=new QPixmap;
snapshot->grabWindow(w->winId(), 0, 0, -1, -1);
QString saveto = "C:\\screenshot.png";
	
QPushButton* makescreen= new QPushButton("screenshot machen");

QObject::connect(makescreen, SIGNAL(clicked()), &a, 
SLOT(snapshot->save(saveto))); //das hier!!

...
"saveto" darf ich hier nicht benutzen ...mein ich zumindest ;)
wie kann ich "snapshot->save(saveto)" also korrrekt als slot in QObject::connect.. einbauen oder wie könnte ich das sonst umsetzen? der code wird sogar ohne Fehler kompiliert

im Anhang nochmal der ganze code
Dateianhänge
code.cpp
(1.1 KiB) 180-mal heruntergeladen
nexus
Beiträge: 75
Registriert: 14. Oktober 2006 19:24

Beitrag von nexus »

Schau dir mal die Doku zum Thema an http://doc.trolltech.com/4.4/signalsandslots.html
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Den Dateinamen must du nicht übergeben, er ist ja unabhängig vom Button. Beim kompilieren kommt natürlich kein Fehler, aber bei der Ausführung kommt eine Fehlermeldung auf der Konsole.
krummnagel
Beiträge: 10
Registriert: 31. Oktober 2008 22:36

Beitrag von krummnagel »

mmm
also erst mal danke für die antworten aber leider hat mir der obige link und dein post noch nicht wirklich die augen geöffnet

es wäre nett wenn ihr mich noch weiter in die richtige Richtung schubsen würdet

wie könnte ich mein snapshot->save(saveto) über einen button auslösen?

geht das hier in die richtige Richtung?


Code: Alles auswählen

QObject::connect(meinknopf, SIGNAL(clicked()), &snapshot, SLOT(save(QString)));
mfg
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Warum willst du unbedingt den Dateinamen mit übergeben?
dontinelli
Beiträge: 146
Registriert: 22. September 2006 20:53

Beitrag von dontinelli »

Am besten machst du einen eigenen Slot, in welchem du den ganzen Code plazierst. Diesen kannst du dann mit dem clicked-Signal vom QPushButton (z.B. beim initialisieren) verbinden.
krummnagel
Beiträge: 10
Registriert: 31. Oktober 2008 22:36

thx

Beitrag von krummnagel »

danke für eure antworten

das mit dem slot werde ich sofort mal versuchen !




bei qt gibt es unter examples & demos überigens auch ein screenshot tool mit dokumentation und ausführlichen erklärungen (engl), das hab ich allerdings erst gerade endeckt
Antworten