Ruum42
Hackerspace in St.Gallen
Sie sind hier
Ruum42-News
Veranstaltungen & News in 2013
Von webmaster am 31. Dezember 2013 - 0:00 erstellt-
Am Donnerstag 22. Oktober machte Werner Meier den Wireshark Workshop. (Nur für Mitglieder)
-
Am 25. Juni ist der Ruum42 umgezogen. Die neue Adresse lautet „Andreasstrasse 5“.
-
Am Dienstag 9. April hat HPO den Vortrag zum Thema RSA gehalten.
-
Am Dienstag 26. Februar hat HPO einen Vortrag zum Thema OpenVPN gehalten.
-
Am Dienstag 12. Februar Vorstellung des Public Domain Projekts und dessen Infrastruktur
Linuxday 2013
Von webmaster am 23. November 2013 - 0:00 erstelltWalkthrough & Linuxtreff November 2013
Von webmaster am 1. November 2013 - 0:00 erstelltOpenVPN-Vortrag
Von webmaster am 8. August 2013 - 0:00 erstelltAm Dienstag, den 26. Februar hat HPO einen Vortrag zum Thema OpenVPN gehalten. Hier finden sich die Skripte und Dokumentation dazu.
RSA-Vortrag
Von webmaster am 9. April 2013 - 0:00 erstelltAm 9. April hat HPO einen Vortrag zum Thema RSA gehalten.
Veranstaltungen & News in 2012
Von webmaster am 31. Dezember 2012 - 0:00 erstellt-
Am Samstag, den 15. Dezember wurde in Bern der Chaos Computer Club Schweiz gegründet. Da der CCC-CH ein Verband von Vereinen mit dezentraler Organisation ist, haben wir bereits eine „CCC-CH Gruppe Ruum42“ gegründet. Jeder in der Umgebung St. Gallen mit Interesse an einer Mitgliedschaft beim CCC kann bei uns Mitglied werden.
-
Am Samstag, dem 27. Oktober fand im Ruum42 ab 14:00 Uhr ein Treffen zur Gründung des CCC Schweiz statt.
-
Am Mittwoch, dem 24. Oktober wurde der Verein Ruum42 gegründet.
-
Am 9. Oktober 2012 hielt Jan einen Vortrag zum Thema Fotoworkflow unter Linux. Da das Thema extrem umfangreich ist, wird es dazu vermutlich noch eine Fortsetzung geben.
-
Am 2. Oktober begann ein kleiner Qt Workshop. Der nächste Termin folgt noch…
-
Seit ein paar Wochen haben wir endlich auch das Standesgemässe Getränk im Sortiment: Club Mate.
-
Seit dem 13. September 2012 verfügt der Raum dank dem Einsatz von Wene über einen Internetzugang per VDSL
-
Am 25. September hielt Paul einen Vortrag zum Thema Java.
-
Am 11. September fand ein Vortrag zum Thema Git statt.
-
Am 7. August fand ein Vortrag zum Thema Qt statt.
-
Am 3. und 10. Juli fand ein Vortrag zum Thema PHP statt.
-
Am 19. Juni hielt Paul im Rahmen des Linuxtreffs einen Vortrag zum Thema Python.
-
Am 5. Juni fand im Rahmen des Linuxtreffs ein Vortrag zum Thema JavaScript statt.
-
Am 26. April haben wir endlich die neue Türe bekommen. Leider ohne das elektronische Schloss, so dass wir uns da noch etwas einfallen lassen müssen…
-
Am Dienstag Abend, dem 3. April war Tag der offenen Kellertür.
-
Wir sind auf der Suche nach diesen Sachen: Gesuchte Sachen
Kurzvortrag am Linuxday 2012 über den Ruum42
Von webmaster am 6. Dezember 2012 - 0:00 erstelltAm LinuxDay 2012 haben wir unseren Hackerspace und unsere Projekte kurz vorgestellt.
Download: linuxday_lightning.pdf
QT Workshop
Von Wene am 23. Oktober 2012 - 0:00 erstelltDer Qt Vortrag fand am 7. August statt. Das Thema war eine kurze Einführung in die Fähigkeiten und den Umfang des C++ Frameworks Qt. Die Präsentation kann hier heruntergeladen werden:
Übungen
Die Übungen müssen hier noch eingefügt und beschrieben werden…
HELLO WORLD
#include <QApplication> #include <QtGui> int main(int argc, char *argv[]) { QApplication app(argc, argv); QPushButton *MyButton = new QPushButton("Hello World"); MyButton->resize(120,50); MyButton->show(); return app.exec(); }
Kompilieren per Dreisatz:
qmake -project qmake make
LAYOUT
GRUNDLAGEN
Layouts können ineinander verschachtelt werden. Die wichtigsten Layouts sind:
-
QVBoxLayout
-
QHBoxLayout
-
QGridLayout
Einem QWidgetwird ein Layout per setLayout() zugewiesen. Ebenfalls kann bei der Erstellung des Layouts das Elternwidget im Konstruktor übergeben werden.
QWidgets werden mit der Methode addWidget() zu Layouts hinzugefügt, Layouts per addLayout()
BEISPIEL
main.cpp
#include <QtGui/QApplication> #include "mainwidget.h" int main(int argc, char *argv[]) { //Mit dieser Zeile können im Quelltext innerhalb tr() auch UTF-8 Zeichen enthalten sein. QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); //Standard aus der Qt-Creator Vorlage QApplication a(argc, argv); MainWidget w; w.show(); return a.exec(); }
mainwidget.h
#ifndef MAINWIDGET_H #define MAINWIDGET_H //Es empfiehlt sich hier <QtGui/QWidget> durch <QtGui> zu ersetzen #include <QtGui> class MainWidget : public QWidget { Q_OBJECT //Das obenstehende Makro Q_OBJECT ist für Ableitungen von QWidget erforderlich //Hier werden alle GUI Objekte deklariert private: QVBoxLayout *MainLayout; QHBoxLayout *LayEdit; QLabel *LblHello; QLineEdit *EdtLine1, *EdtLine2; QPushButton *BtnQuit; public: MainWidget(QWidget *parent = 0); ~MainWidget(); }; #endif // MAINWIDGET_H
mainwidget.cpp
#include "mainwidget.h" MainWidget::MainWidget(QWidget *parent) : QWidget(parent) { setWindowTitle(tr("Demo Layout")); //Gewöhnt euch an immer tr() zu verwenden für Strings in QObject //Erstellen MainLayout = new QVBoxLayout(this); LayEdit = new QHBoxLayout(); LblHello = new QLabel(tr("<p>Hallo<br /><b>Wält</b></p>")); BtnQuit = new QPushButton(tr("Beend&en")); EdtLine1 = new QLineEdit(); EdtLine2 = new QLineEdit(); //Layout MainLayout->addWidget(LblHello); MainLayout->addLayout(LayEdit); LayEdit->addWidget(EdtLine1); LayEdit->addWidget(EdtLine2); MainLayout->addWidget(BtnQuit); //Signals and slots connect(BtnQuit, SIGNAL(clicked()), this, SLOT(close())); connect(EdtLine1, SIGNAL(textChanged(QString)), EdtLine2, SLOT(setText(QString))); connect(EdtLine2, SIGNAL(textChanged(QString)), EdtLine1, SLOT(setText(QString))); } MainWidget::~MainWidget() { }
SIGNALS UND SLOTS
Inhalt fehlt noch. Wird während oder nach dem nächsten Workshop Teil ergänzt.
TIPPS UND TRICKS
UTF-8 STRINGS IM QUELLCODE
Damit Strings in Unicode im Quellcode auch richtig verarbeitet werden, kann die folgende Zeile in main() eingefügt werden. Bedingung ist natürlich, dass die Strings in tr() gekapselt sind. Dies ist aber unabhängig davon sowieso zu empfehlen damit spätere Übersetzungen des Programms möglich werden.
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
ÜBERSETZUNG VON STANDARDELEMENTEN
Diverse Widgets enthalten vordefinierte Texte auf welche man keinen Einfluss hat. Beispiele dafür sind Buttons in QMessageBox und das Kontextmenü in QTextEdit. Egal welche Sprache auf dem System eingestellt ist, diese Texte sind englisch.
Qt bietet für diese Elemente eigene Übersetzungsdateien. Diese können wie eigene Übersetzungen mit QTranslator geladen werden.
Für Programme welche dynamisch gelinkt werden, sollten die Übersetzungen auch dynamisch geladen werden. Wenn das Programm allerdings statisch kompiliert wird, sollten auch die Übersetzungen per Ressourcendatei eingebunden werden.
Innerhalb von main() wird die Übersetzung z.B. so dynamisch geladen:
int main(int argc, char *argv[]) { QApplication app(argc, argv); QTranslator translator; translator.load("qt_de", QLibraryInfo::location(QLibraryInfo::TranslationsPath)); app.installTranslator(&translator); MainWidget w; w.show(); return app.exec(); }
Statisch kompilierte Programme sollten die Übersetzung hingegen so laden:
translator.load("qt_de", ":/system");
Die Übersetzungsdatei „qt_de.qm“ muss dafür natürlich in das Projektverzeichnis kopiert und in eine Ressourcendatei eingebunden werden. Natürlich kann auch die zu verwendende Sprache dynamisch mit QLocale::system().name() ermittelt werden. Wenn keine Datei mit passenden Namen gefunden wird, startet das Programm ohne Fehlermeldung in englisch.
SPEZIALITÄTEN FÜR WINDOWS
Wer Programme auch für Windows entwickeln möchte, sollte ein paar Sonderheiten dieser Plattform beachten.
PROGRAMMSYMBOL
Symbole welche zur Laufzeit mit setWindowIcon() geladen werden, werden nicht als Symbol der EXE Datei angezeigt. Die folgende Anleitung erklärt wie dies gemacht wird: http://qt-project.org/doc/qt-5.0/appicon.html
STATISCH KOMPILIEREN
Um Programme unter Windows weitergeben zu können ohne dass sich der Empfänger gleich Qt komplett installieren muss, kann es hilfreich sein diese Programme statisch zu kompilieren. Dafür ist eine angepasste Version der Qt Bibliotheken erforderlich. Diese muss man selbst kompilieren. Eine Anleitung dazu gibts hier: http://qt-project.org/wiki/Build_Static_Qt_For_Windows_With_Gcc_German
Java-Vortrag
Von webmaster am 25. September 2012 - 0:00 erstelltAm 25. September 2012 hielt Paul einen Vortrag zum Thema Java. Dazu gibt es Slides und Beispielcode.