Non parleremo dei tab intesi come QTabWidget, ma l'ordine di quando usiamo il tab per navigare tra i componenti della gui.

In sostanza, come suppongo già sappiate, quando state in una gui, potete usare il tasto tab per navigare tra i componenti.

L'ordine in cui si naviga viene scelto dal Qt Designer man mano che si aggiungo i componenti nella finestra.

In questo caso specifico, vogliamo solo stampare in PDF una QTableWidget; quindi:

  • non stiamo effettuando una vera e propria esportazione
  • questo codice si può tranquillamente usare anche per altri widget

Comunque, per eseguire questa operazione, ci avvaliamo di due oggetti:

Qt Creator, porta con un ottimo Qt Designer per la creazione di gui in modalità drag-and-drop.

Alcuni dei suoi pochi limiti, sono l'espandibilità dei componenti nel momento in cui massimizzi la finestra.

Si può ovviare facilmente a questo cosa usando la funzione di auto-expanding!

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!