Archiv für die Kategorie „c++“

Qt ColorButton Klasse

Dienstag, 5. August 2008

In dem Qt SDK der Firma Trolltech gibt es große Möglichkeiten durch enthaltene Widgets. Es ist jedoch auch möglich sehr einfache neue Widgets zusammen zu stellen. Wir habe hier einmal ein neues sehr einfaches Widget für die gewählte Farbe erstellt, welches direkt zur Farbwahl über den nativen ColorPicker-Dialog des jeweiligen Betriebssystems verwendet werden kann:

Beispiele QColorButton Elemente

Es wird anstelle eines Icons, wie sonst, ein Icon in der aktuell gewählten Farbe erstellt, welches angezeigt wird. Der größte Vorteil dieses Widgets ist eine Zusammenfassung mehrerer verständlicher Funktionen zu einem Element.

Vor allem ist aber die Verwendung in sehr wenigen Zeilen, wie bei Qt-Widgets üblich, gegeben:

  1. #include <QColorButton.h>
  2.  
  3. QColorButton *btn = new QColorButton( widget );
  4. btn -> setText( "Mit eigenem Text ohne ToolTip" );
  5. btn -> enableColorText( false );
  6. btn -> enableToolTip( false );

Download: /examples/qcolorbutton-0.1.tar.gz (2,2 KB)

Vielleicht dürfen wir für Sie einmal ein spezielles Qt-Widget erstellen? Für weitere Fragen stehe ich Ihnen natürlich jederzeit gerne zur Verfügung. Natürlich erreichen Sie mich telefonisch und über meine eMail-Adresse.

Florian Becker

Pyades Technologies GmbH
Römerstr. 4 L
55232 Alzey

Tel: +49 (0) 67 31.998 78 66
Mob: +49 (0) 163.680 35 64
Fax: +49 (0) 67 31.998 78 67

Webseite: www.pyades.com

Amtsgericht: Mainz HRB 41299
Geschäftsführer: Florian Becker

Kostenreduzierung durch Neuentwicklung

Montag, 16. Juni 2008

Durch das Entwickeln von neuer Software kann es nötig sein, auf Wünsche und Fähigkeiten der Mitarbeiter einzugehen. Es wird dadurch möglich, effizienter zu arbeiten und teilweise Kosten für die Einarbeitung zu sparen. Wir nennen es “Kostenreduzierung durch Neuentwicklung”.

Es handelt sich dabei um eine sehr einfache mathematische Aufgabe. Wenn Ihre Mitarbeiter sehr viel Zeit benötigen um “eigentlich” einfache oder bekannte Abläufe zu durchlaufen oder sie mit dem “Handling” einer Software nicht so gut zurecht kommen, da besonders viele Einstellungen oder viele Eigenschaften vorhanden sind, dann sollte man das gesamte Programm in Zahlen umsetzen und errechnen, was man in Zukunft für die Steigerung der Effizienz unternehmen kann.

Folgendes Beispiel möchte ich Ihnen vorstellen:
Sie haben fünf Mitarbeiter an einem System, welche bestimmt 60 Minuten pro Tag durch eine schlecht verständliche Software verlieren. Außerdem sind die Abläufe nicht wunschgemäß und halten noch einmal bei der Ablage auf.
Entschließen Sie sich nun also diese Zeit zu sparen, dann wäre das bei einem Stundensatz von 60 Euro bereits 20 Tage/Monat * 5 Mitarbeiter * 1 Stunde bzw. 6.000 Euro/Monat. Anders ausgedrückt, jeder Mitarbeiter leistet nur 7/8 bzw. 75% seiner eigentlichen Arbeitsleistung, die durch eine neue Software in Eigenentwicklung und betriebliche Anpassung um 25% gesteigert werden kann. Natürlich variiert diese Berechnung, je nach dem, wie viele Mitarbeiter oder wie ineffizient eine Software wirklich ist. Wichtig ist auch, der Umfang einer solchen Software. Dafür kann man pauschal natürlich keine Angaben machen, aber wir erstellen Ihnen hierzu gerne jederzeit ein Angebot und übernehmen die Kalkulation für Sie.

Vielleicht dürfen wir für Ihr Unternehmen einmal eine Steigerung der Effizienz Ihrer Software durchführen. Für weitere Fragen stehe ich Ihnen natürlich jederzeit gerne zur Verfügung. Natürlich erreichen Sie mich telefonisch und über meine eMail-Adresse.

Florian Becker

Pyades Technologies GmbH
Römerstr. 4 L
55232 Alzey

Tel: +49 (0) 67 31.998 78 66
Mob: +49 (0) 163.680 35 64
Fax: +49 (0) 67 31.998 78 67

Webseite: www.pyades.com

Amtsgericht: Mainz HRB 41299
Geschäftsführer: Florian Becker

Grafische Ausgaben mit Qt/C++ unter Mac OS X Leopard

Freitag, 30. Mai 2008

Es handelt sich um ein generelles Thema in der Anwendungsprogrammierung. Ausgaben grafisch sichtbar machen und für statistische Zwecke oder Verbesserungsmöglichkeit der Software nutzen. Es bestehen immer viele Lösungsansätze, wovon ich die einfachsten in reinem C++ unter Qt aufgearbeitet habe. Natürlich ist es mit C++ nicht unbedingt eine grafische Ausgabe, als vielmehr eine Ausgabe auf der Konsole (Shell, Unix-Shell, MS DOS Eingabeaufforderung, Bash usw. - Begriffe dafür gibt es genügend).

1. Eine einfache Ausgabe in C++ wird unter Umständen so aussehen:

  1. /* stl header */
  2. #include <iostream>
  3. /* default stl namespace */
  4. using namespace std;
  5. /* simple not-graphical output in stl code */
  6. cout << "testoutput" << endl;

Unter Verwendung des standardmäßigen Namespaces der STL erhalten wir die Ausgabe “testoutput”, mit “endl” (End of Line) definieren wir das Ende sowie einen Zeilenumbruch.

2. Unter der Verwendung von Qt erhalten wir ein ähnliches Ergebnis, allerdings einen Tick kürzer als mit der STL:

  1. /* qt header */
  2. #include <QtDebug>
  3. /* simple not-graphical output in qt code */
  4. qDebug() << "testoutput";

Beide Beispiele laufen problemlos unter allen Betriebssystemen, darunter natürlich auch Mac OS X 10.5 alias Leopard.

Um die Ausgabe jetzt grafisch zu gestalten, nehmen wir uns ein Oberflächenelement (Widget) von Qt zur Hilfe, und zwar eine Textausgabe. Es handelt sich um die Klasse QTextEdit.

3. Grafische Ausgabe mit QTextEdit unter Leopard:

  1. /* qt header */
  2. #include <QTextEdit>
  3. /* create a textedit */
  4. QTextEdit *myTextEdit = new QTextEdit;
  5. /* show textedit */
  6. myTextEdit -> show();
  7. /* append text to textedit */
  8. myTextEdit -> append( "testoutput" );

Generell benötigen wir kaum mehr Code und unser Ergebnis sieht wie folgt aus:

Grafische Ausgabe mit Qt/C++ unter Mac OS X Leopard

Wir können es natürlich noch in der Reihenfolge verändern, bzw. einen Titel mit setWindowTitle oder ein Icon mit setWindowIcon hinzufügen. Aber verschönern kann man GUI-Elemente natürlich immer.

Damit wir nun eine sinnvolle Aufgabe vergeben, geben wir die Fehler/Meldungen von Qt in unserem Textedit aus (hierfür benötigen wir zu Beginn eine Funktion, die bei einer Meldung immer wieder ausgeführt wird - “Callback” genannt). Es handelt sich um die vollständige Main-Funktion zum Starten einer Anwendung. Dieses Beispiel steht Ihnen nach dem Quelltext zum Download zur Verfügung.

4. Grafische Ausgabe von Qt-Meldungen mit QTextEdit unter Leopard:

  1. /* qt header */
  2. #include <QApplication>
  3. #include <QTextEdit>
  4.  
  5. /* our textedit */
  6. static QTextEdit *myTextEdit;
  7.  
  8. void myMessageOutput( QtMsgType type, const char *msg ) {
  9.   switch ( type ) {
  10.     /* a debug message */
  11.     case QtDebugMsg:
  12.       /* append a message */
  13.       myTextEdit -> append( QString( "Debug: %1" ).arg( msg ) );
  14.       break;
  15.     /* a warning message */
  16.     case QtWarningMsg:
  17.       /* append a message */
  18.       myTextEdit -> append( QString( "Warning: %1" ).arg( msg ) );
  19.       break;
  20.     /* a critical message */
  21.     case QtCriticalMsg:
  22.       /* append a message */
  23.       myTextEdit -> append( QString( "Critical: %1" ).arg( msg ) );
  24.       break;
  25.     /* a fatal message */
  26.     case QtFatalMsg:
  27.       /* append a message */
  28.       myTextEdit -> append( QString( "Fatal: %1" ).arg( msg ) );
  29.       abort();
  30.   }
  31. }
  32.  
  33. int main( int argc, char **argv ) {
  34.   /* install qt message handler */
  35.   qInstallMsgHandler( myMessageOutput );
  36.   /* add application instance */
  37.   QApplication app( argc, argv );
  38.   /* create a textedit */
  39.   myTextEdit = new QTextEdit;
  40.   /* show the textedit */
  41.   myTextEdit -> show();
  42.   /* return the application instance and run in idle mode */
  43.   return app.exec();
  44. }

Download: /examples/mytextedit-0.1.tar.gz (716 Bytes)

Sie benötigen eine Softwareprogrammierung mit Oberflächenelementen in zeitgemäßem Design? Nehmen Sie doch einfach telefonisch oder per eMail mit mir Kontakt auf. Ich freue mich über Ihre Projektanfragen. Bitte beachten Sie, dass hier oft nur sehr einfache Beispiele verwendet werden, die die Allgemeinheit verständlicher findet als komplexe Softwareentwicklung unter Qt. Allerdings veröffentliche ich auch solche von Zeit zu Zeit (gerne auch nach Anregung).

Florian Becker

Pyades Technologies GmbH
Römerstr. 4 L
55232 Alzey

Tel: +49 (0) 67 31.998 78 66
Mob: +49 (0) 163.680 35 64
Fax: +49 (0) 67 31.998 78 67

Webseite: www.pyades.com

Amtsgericht: Mainz HRB 41299
Geschäftsführer: Florian Becker