signal

Mattepuffo's logo
Introduzione ai SIGNAL in Rust

Introduzione ai SIGNAL in Rust

In general un SIGNAL è un "software interrupt" (scusate ma non saprei come tradurlo in italiano) che viene inviato dal sistema o da un processo per notificare un evento.

Ad esempio quando lanciate un comando nel terminale e poi premte CTRL+C per interromperlo; quello è un SIGNAL.

Mattepuffo's logo
Impostare l'uppercase su una QLineEdit

Impostare l'uppercase su una QLineEdit

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.

Mattepuffo's logo
Aggiornare la gui in Qt da un altro thread

Aggiornare la gui in Qt da un altro thread

Supponiamo di voler eseguire un operazione in un thread secondario, e di voler aggiornare la nostra gui man mano che l'operazione va avanti: come possiamo fare questa cosa in Qt?

Molto semplicemente usando il metodo connect, i SIGNAL e gli SLOT.

Direi di cominciare dal nostro lavoro in background:

// workerthread.h
#ifndef WORKTHREAD_H
#define WORKTHREAD_H

#include <QMutex>
#include <QThread>

class WorkerThread : public QThread
{
    Q_OBJECT
public:
    explicit WorkerThread(QObject *parent = 0, bool b = false);
    void run();
    bool stop;

signals:
    void valueChanged(QString text);
    void finished();
};

#endif // WORKTHREAD_H

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).