Dovendo posizionare un widget Qt a seconda della dimensione del monitor, avevo necessità di identificarla in fase di esecuzione del programma.

In verità la cosa è stata abbastanza semplice, e senza includere librerie di nessun tipo.

Oggi vediamo un semplice metodo per esportare una QTableWidget in CSV.

Sarà un esempio basico, nel senso che ci limiteremo a buttare dentro dati estratti, senza nessun tipo di formattazione.

Io mi sono creato una classe apposita (SaveTable) che in input si prende il path di salvataggio del file, e la QTableWidget de leggere.

Questo il file di intestazione:

#ifndef SAVETABLE_H
#define SAVETABLE_H

#include <QObject>
#include <QTableWidget>
#include <QFile>
#include <QDir>
#include <QTextStream>

class SaveTable {
public:
    SaveTable(QString strFile, QTableWidget *tbl);
    virtual ~SaveTable();
};

#endif // SAVETABLE_H

Abbiamo solo il costruttore, dove andremo a svolgere le operazioni.

In pratica, abbiamo una QTableWidget piena di righe, e vogliamo cercare al suo interno scrivendo in una QLineEdit.

Non è molto difficile ottenere questo risultato!

Prima di tutto aggiungiamo un SLOT nel file di intestazione del nostro QWidget:

private slots:
    void txtSearch(QString search);

Personalmente trovo Singleton utile in alcuni casi.

E quindi continuo ad usarlo anche se a molti non piace.

Ne abbiamo visti diversi esempi in vari linguaggi, ed oggi aggiungiamo l'esempio in C++.

Abbiamo tre file:

  • singleton.h
  • singleton.cpp
  • main.cpp

La necessità è quella di fare in modo che in una QLineEdit il testo sia sempre in maiuscolo.

Ci sono varie modalità per ottenere questo risultato, ed io ve ne presento una abbastanza semplice da mettere in pratica.

Aprite il file di intestazione del vostro widget e aggiungete uno SLOT:

private slots:
    void toUpper(const QString &text);

A questo punto passiamo al file di implementazione.

Qt, essendo un framework multipiattaforma, esegue già dei controlli / operazioni sul sistema sottostante, comportandosi di conseguenza.

Ad esempio impostando il path separator in maniera differente tra Windows e Linux / macOS.

E questo giusto per fare un esempio "banale".

Inoltre i programmi scritti con Qt possono essere compilati ed eseguiti anche su Android e iOS, in quanto è supportato anche il touch.

Impostare lo stile in una TableView QML non è difficile, ma neanche così immediato.

Nel senso che bisogna impostare alcune cose, e soprattuto ricordarsi di fare questo import:

import QtQuick.Controls.Styles 1.4

A questo punto possiamo procedere con il resto!

Ho scoperto che il sitema dei connect in Qt può essere molto flessibile!

Vi posto il mio esempio.

Ho un QPushButton collegato ad un evento:

void Articoli::on_btnCollezione_clicked() {

...............................

}

L'editor visuale di Qt Creator è ottimo, ma non si riesce a fare proprio tutto.

Ad esempio, in una QTableWidget, è possibile impostare il numero delle colonne, ma non la label di ogni colonna.

Quindi, di default, si vedrebbero solo i numeri.

Avendo un database Oracle, volevo connettere una mia applicazione in Qt a questo db per giocarci un pò.

Ho scoperto con molto piacere che è possibile usare ODBC con il driver QODBC, che è già incluso.

Inoltre, il framework supporta diversi db; potete vedere tutto alla pagina dedicata.

Cerchiamo di vedere le varie operazioni da compiere.