qt

Mattepuffo's logo
Tab order in Qt

Tab order in Qt

Piccolo trick sulle Qt.

Nella mia finestra principale avevo una QLineEdit e un QButton.

Poi ho aggiunto una QPlainTextEdit e mi è successo che dalla QLineEdit, premendo il tasto TAB, andavo a finire sulla QPlainTextEdit, e non sul QButton.

Per come era fatta questa piccola app non andava bene.

Per cambiare questo comportamento si può usare la funzione setTabOrder di QWidget.

Mattepuffo's logo
Creare file in C++ e QFileDialog

Creare file in C++ e QFileDialog

Con questo articolo prendo due piccioni con una fava; vedremo sia come usare un QFileDialog per decidere dove salvare i file, sia come salvarli fisicamente usando il puro C++.

Dire di cominciare dalla parte grafica Qt.

Come componente grafico di input ho usato una QAction in modo da mettere nel menu File la classica voce Salva.

Poi ho creato una funzione dentro alla MainWindow e collegato le due (per vedere nel dettagli come si fa guardate qua):

connect(ui->actionSave, SIGNAL(triggered()), this, SLOT(saveFile()));

...........

void MainWindow::saveFile()
{
    QString filename = QFileDialog::getSaveFileName(this, tr("Save"), QDir::homePath(), tr("TXT(*.txt);;DOC(*.doc)"));
    char *cFilename = filename.toAscii().data();
    SaveResult save;
    save.saveFile(cFilename, ui->txtResult->toPlainText().toStdString());
}

Qua potete vedere la doc ufficiale relativa alla funzione getSaveFileName().

Il primo parametro indica la finestra parent.

Mattepuffo's logo
Da Qstring a string e viceversa

Da Qstring a string e viceversa

Quando si sviluppa con le Qt si incappa spesso in problemi incompatibilità tra le classi native del C++ e del framework.

Nel caso specifico mi sono trovato a dover fare la conversione da QString a string e viceversa.

Questo perchè ho una classe che svolge determinate operazioni al di fuori del fremwork e che ha una risultato raccolto dalla gui.

Nello specifico la classe è questa:

#include "scan.h"

#include <stdio.h>

#include <stdlib.h>

#include <string>

using std::string;

Scan::Scan()

{

}

string Scan::scanNetwork(string cmd)

{

char *buf = &cmd[0];

FILE *p = popen(buf, "r");

string s;

for (size_t count; (count = fread(buf, 1, sizeof(buf), p));)

{

s += string(buf, buf + count);

}

pclose(p);

return s;

}

La classe prende come input quanto scritto in una QTextEdit e il risultato viene visualizzato in un'altra QTextEdit.

Solo che personalmente nella classe preferisco usare le librerie standard del C++, mentre nella QMainWindow usare le classi Qt.

Vediamo quindi come fare i due passaggi.

Mattepuffo's logo
Qt, signal e slot

Qt, signal e slot

Ho cominciato lo sviluppo di un programmino in C++ e le Qt.

Con Qt-Creator, l'IDE ufficiale per lo sviluppo cone le Qt, ho creato un progetto Qt Widget Project -> Qt Gui Application.

Mi sono ritrovato con una QWindow e dall'editor grafico ho aggiungo due QAction al menu.

A questo punto il problema era: come fare a collegare un'azione/evento alla voce del menu (QAction)?

Bene, vediamo come fare.

I file che ci interessano sono mainwindow.h e mainwindow.cpp.

In pratica dobbiamo aggiungere una funzione che poi collegheremo alla QAction.

Inizialmente i file erano questi:

    #ifndef MAINWINDOW_H

    #define MAINWINDOW_H

    #include <QMainWindow>

    namespace Ui {

        class MainWindow;

    }

    class MainWindow : public QMainWindow

    {

        Q_OBJECT

    public:

        explicit MainWindow(QWidget *parent = 0);

        ~MainWindow();

    private:

        Ui::MainWindow *ui;

    };

    #endif // MAINWINDOW_H

    #include "ui_mainwindow.h"

    #include "mainwindow.h"

    MainWindow::MainWindow(QWidget *parent) :

        QMainWindow(parent),

        ui(new Ui::MainWindow)

    {

        ui->setupUi(this);

    }

    MainWindow::~MainWindow()

    {

        delete ui;

    }

I file predefiniti dopo la creazione del progetto.

A questo punto dobbiamo creare una funzione che venga eseguita al click sulla voce del menu (o all'esecuzione della scorciatoia da tastiera che è possibile impostare anche dall'editor grafico).

Mattepuffo's logo
Usare i tab in Windows Explorer

Usare i tab in Windows Explorer

La navigazione nei borwser è considerata una delle migliori aggiunte deli ultimi tempi.

Non tanto perchè è chissà quae invenzione, ma perchè veramente comoda!

Però Windows Explorer (il file manager di Windows) ancora non ha implementato l'uso delle schede.