Tag Archives: cpp

QFakturat – program do zarządzania fakturami, produktami i danymi klientów na Linux

Kilka lat temu, żeby zdobyć trochę doświadczenia poza Java i Ruby, zabrałem się za naukę Qt4.8 i C++. W ramach tego ćwiczenia zacząłem pracować nad aplikacją, która nie istniała wtedy na Linuxa i pewnie do dziś jest tego typu unikalnym programem na pingwina i diabełka.
Aplikacja była pisana na wymogi prowadzenia firmy taty, gdzie z względu kosztów licencyjnych zrezygnowaliśmy ze środowiska Windowsa. W firmie od 6 lat używane są tylko systemy Linuxowe (KUbuntu i openSUSE).

QFakturat był pisany początkowo w Qt4.8 na Linux, jednak z czasem części kodu zostały przepisane na Qt5 oraz dodana została kompatybilność dla systemów *BSD. Nigdy nie próbowałem portować aplikacji na Windowsa ani OS Xa, więc nie jestem w stanie powiedzieć, czy działa.

Screenshot_20160509_150456

Obecna funkcjonalność programu:

  • wystawianie faktur w PDF (i tylko PDF)
  • obsługa kilku sprzedawców
  • zapisywanie/edytowanie/usuwanie klientów
  • zarządzanie produktami
  • automatyczne konwertowanie kwot brutto<->netto<->podatek przy zmianie jednej z wartości
  • spersonalizowane faktury – pozwalają na ustawienie własnego tekstu w stopce faktury i na lewym boku
  • 3 skórki programu
  • walidacja i opcjonalne formatowanie NIPu
  • wysoka elastyczność programu (sam możesz ustawić rodzaje faktu, listę stawek VAT, metody zapłaty, czas na zapłatę czy obsługiwane waluty)
  • zarządzanie produktami i filtrowanie sprzedanych/dostępnych produktów/usług.

Continue reading

How to work with SQL in C++ and Qt

You can work with SQL queries in Qt and SQL in many different ways, here I will show you how I came up with a working method. To keep things simple, I am not going to use any UI to print or edit queries. It will be just source code and stdout, as a database engine I will use SQLite3.

After you created your project, edit project.pro and locate line:

QT       += core

Modify this line by adding `sql`:

QT       += core sql

Since now, when you compile your project, QtSql module will be linked to the project:

g++ -Wl,-O1 -Wl,-O1,--sort-common,--as-needed,-z,relro -o QtSql main.o   -lQt5Sql -lQt5Core -lpthread

Continue reading

Use clang as default compiler for Qt projects

There are two ways to set clan as your default compiler in Qt-Creator. One way will set LLVM as default in Qt-Creator for you only and the other one will set LLVM as default for your project, so everyone cloning/forking your repo will use clang too. If you want clang as default only for you, go in Qt-Creator to Tools -> Options -> Build & Run -> Kits select your default kit, I have `Desktop` and set Compiler to CLang. Continue reading

Transparent, dynamically generated from text tray icon in Qt and C++

[Qt C++] – Transparent, dynamically generated from text tray icon

#include <qapplication>
 
#include <qsystemtrayicon>
#include <qpixmap>
#include <qpainter>
#include <qfont>
 
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
 
    QPixmap pixmap(20, 20); // small size should work fine on every platform
    pixmap.fill(Qt::transparent); // set transparency of the icon
 
    QPainter painter(&pixmap);
 
    int size = 15;  // size 15 looks nice on KDE and GNOME
    QFont font("", size);
 
    painter.setFont(font);
 
    QString theText = "3"; // this will be the text in the system tray icon
    painter.drawText(QPoint(5, size+1), theText);
 
    QSystemTrayIcon *tray = new QSystemTrayIcon();
    tray->setIcon(QIcon(pixmap));
    tray->show();
 
    return app.exec();
}</qfont></qpainter></qpixmap></qsystemtrayicon></qapplication>

Continue reading