Label skalieren??

Alles rund um die Programmierung mit Qt
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

danke. Du hast recht. Ich muss mit der Doku klar kommen und damit arbeiten können. Aber da steht dann immer z.B. sowas wie

Code: Alles auswählen

QImageReader ( const QString & fileName, const QByteArray & format = QByteArray() )
und da wüsste ich nichts mit dem QByteArray & format anzufangen.
Aber in Zukunft werde ich mich noch mehr anstrengen und versuchen zu verstehen was damit gemeint ist.
Hmm mir fällt nichts ein ^^
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

nici hat geschrieben:Aber da steht dann immer z.B. sowas wie

Code: Alles auswählen

QImageReader ( const QString & fileName, const QByteArray & format = QByteArray() )
und da wüsste ich nichts mit dem QByteArray & format anzufangen.
So was steht auch immer drinnen.
Da hilft Scrollen, oder die Seite durchsuchen (Können sowohl assistant als auch der Browser, falls du die Doku Online liest.)
Im obigen Beispiel könnte man so das hier finden:

Code: Alles auswählen

QList<QByteArray> QImageReader::supportedImageFormats ()   [static]
Returns the list of image formats supported by QImageReader.
By default, Qt can read the following formats:

Format
Description
BMP
Windows Bitmap
GIF
Graphic Interchange Format (optional)
JPG
Joint Photographic Experts Group
JPEG
Joint Photographic Experts Group
MNG
Multiple-image Network Graphics
PNG
Portable Network Graphics
PBM
Portable Bitmap
PGM
Portable Graymap
PPM
Portable Pixmap
TIFF
Tagged Image File Format
XBM
X11 Bitmap
XPM
X11 Pixmap

Reading and writing SVG files is supported through Qt's SVG Module.
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

Code: Alles auswählen

QImageReader ( const QString & fileName, const QByteArray & format = QByteArray() )
QBytearray erwartet als Übergabepara Referezen von nen QString und nen ByteArray. Dadurch das du via Referenzübergibst kannst du die Werte verändern-wenn deine Fkt fertig ist hast diese Werte in der Aufrufenden Fkt. Das const schützt. Sprich du sagst dir somit das du dir die Werte per Referenz übergibst, Sie aber schützen möchtest! So kann nix mit den Werten passieren ausser das du Sie lesen und verwenden kannst!

Sehr anschaulich is da dieses Bsp:

Code: Alles auswählen

void Pfusche(int Ein1, int &Ein2);

int main()
{
int Zaehler = 7, Index = 12;

   std::cout << "Die Werte sind ";
   printf("%3d %3d\n", Zaehler, Index);

   Pfusche(Zaehler, Index);

   std::cout << "Die Werte sind ";
   printf("%3d %3d\n", Zaehler, Index);

   return 0;
}

void Pfusche(int Ein1, int &Ein2)
{
   Ein1 = Ein1 + 100;
   Ein2 = Ein2 + 100;
   std::cout << "Die Werte sind ";
   printf("%3d %3d\n", Ein1, Ein2);
}


// Ergebnis beim Ausführen
//
// Die Werte sind    7  12
// Die Werte sind  107 112
// Die Werte sind    7 112
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

So wir ihr das erklärt ist es sehr verständlich. Danke für eure Mühe. In der Doku steht ja (z.B) sowas

Code: Alles auswählen

void QImageIOHandler::setFormat ( const QByteArray & format )
Sets the format of the QImageIOHandler to format. The format is most useful for handlers that support multiple image formats.
See also format().
Daraus habe ich jetzt verstanden, dass es das Format von QImageIOHandler zum Format steht und nix andres. Ich wüsste jetzt halt nicht so richtig wie ich es in meinem Code verwenden könnte/sollte. Aber egal, ich mein mit der Zeit werde ich es schon lernen die Doku zu benutzen. Danke Jungs.
Hmm mir fällt nichts ein ^^
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

Du setzt das Format des QImageIOHandler

Und die Formate werden 2 Beiträge weiter oben schon aufgelistet....

By default, Qt can read the following formats:

Format
Description
BMP
Windows Bitmap
GIF
Graphic Interchange Format (optional)
JPG
Joint Photographic Experts Group
JPEG
Joint Photographic Experts Group
MNG
Multiple-image Network Graphics
PNG
Portable Network Graphics
PBM
Portable Bitmap
PGM
Portable Graymap
PPM
Portable Pixmap
TIFF
Tagged Image File Format
XBM
X11 Bitmap
XPM
X11 Pixmap
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

Und wenn ich jetzt zum Beispiel ein Bild speichern möchte, ein Format angebe das nicht in QImageReader /QImageWriter ist, dann kann ich das mit irgendeiner Funktion von QImageReader /QImageWriter überprüfen lassen ,oder? Weil ich hab das Problem, das bei mir keine tiff's gespeichert und angezeigt werden können, wegen meiner Qt-Version. Kann ich dann eine Fehlermeldung ausgeben lassen, dass hier das Format tiff nicht zulässig ist?? (aber auf einem anderen PC, mit QT das tiff erlaubt, wäre es ja nicht sinnvoll)
Hmm mir fällt nichts ein ^^
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

bool QImageIOHandler::canRead () const [pure virtual]
Returns true if an image can be read from the device (i.e., the image format is supported, the device can be read from and the initial header information suggests that the image can be read); otherwise returns false
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

ja seht ihr, ich müsste jetzt tausend sachen ausprobieren, weil ich nicht genau wie und wo in meinem Code ich es benutzen müsste. Aber danke, jetzt will ich es mal selber versuchen. Aber die Anwort für die ScrollBar könnt ihr mir schon ansatzweise sagen ^^, dannnkkee.
Hmm mir fällt nichts ein ^^
pfid
Beiträge: 535
Registriert: 22. Februar 2008 16:59

Beitrag von pfid »

AuE hat geschrieben:

Code: Alles auswählen

QImageReader ( const QString & fileName, const QByteArray & format = QByteArray() )
QBytearray erwartet als Übergabepara Referezen von nen QString und nen ByteArray. Dadurch das du via Referenzübergibst kannst du die Werte verändern-wenn deine Fkt fertig ist hast diese Werte in der Aufrufenden Fkt.
Naja, der Witz ist hier wohl eher, dass kein neues Objekt erzeugt wird.
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

und ich dachte es ginge um die Referenzen ;-)
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

ne also ich komme echt nicht drauf. Ich habe es mal so versucht:

Code: Alles auswählen

QString filter = "Images (*.png;; *.xpm;; *.jpg;; *.jpeg;; *.bmp;; *.tiff;; *.xbm)";
	QString fileName = QFileDialog::getSaveFileName(this, tr("Save File"),"/home/nurc/untitled.png",filter);
	QString suf = QFileInfo(fileName).suffix();
	bool QImageIOHandler::canRead() const;
	if(!fileName.isEmpty()){		
		if( filter.contains( suf ) ){
			_mPix.toImage().save(fileName);
		}else{
			QMessageBox::warning(this, "Warnung", "Falsche Dateiendung");
		}		
	}
aber es kommt die Fehlermeldung: error: invalid use of qualified-name 'QImageIOHandler::canRead'
Und die ScrollBar, da weiss ich nicht ob ich das connect richtig habe.

Code: Alles auswählen

connect(imageLabel, SIGNAL(valueChanged(int)),
			this, SLOT(setValue(int)));
(ach gott ich hab keinen Kopf mehr ^^) mir fehlt da irgendwie "horizontalScrollBar"
Hmm mir fällt nichts ein ^^
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Code: Alles auswählen

#include <QtGui>

int main(int argc, char** argv)
{
    QApplication app(argc, argv);
    QLabel label;
    QPixmap pix("./test.png");
    label.setPixmap(pix);

    QScrollArea scroll;
    scroll.setWidget(&label);
    
    scroll.show();
    
    return app.exec();
}
Das wäre ein kleines Beispiel, welches du dir auch hättest ausdenken können.
Geh jetzt her und vergößer das Fenster.
Du wirst sehe, dass automatisch Scrollbars kommen, wenn das Fenster zu klein für das Label wird, und auch wieder verschwinden, wenn alles passt.
Demnach brauchst du hierfür KEIN connect!!!

Du musst im Designer jetzt nur das Layout, in dem momentan dein imageLabel liegt, auflösen, an die Stelle des Labels eine ScrollArea ziehen, in diese neue ScrollArea dein altes imageLabel ziehen, das alte Layout wieder herstellen und du brauchst nicht mal was im Code verändern sondern nur neu kompilieren.

Qt ist SO einfach! (SCNR)
AuE
Beiträge: 918
Registriert: 5. August 2008 10:58

Beitrag von AuE »

DA sag ich nix mehr zu...

Code: Alles auswählen

 bool QImageIOHandler::canRead() const;
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Ich denke, wir sollten dieses Thread jetzt mal schließen und sich eine bestimmte Person mal überlegen, ob wir hier im Kindergarten sind, oder ob sie wirklich Hilfe will.
nici
Beiträge: 246
Registriert: 29. Oktober 2008 12:50

Beitrag von nici »

hab schon verstanden. Ich hoffe mal ihr kommt selber an einem Punkt an, an dem ihr nicht weiter kommt und es hilft euch keiner. Danke. Danke franzf.
Hmm mir fällt nichts ein ^^
Antworten