QT realiza el asistente de depuración en serie (7): creación del panel de configuración de fuentes y transferencia de valores entre ventanas

Publicación anterior:
QT implementa el asistente de depuración en serie (6): diseño de página
 

Las herramientas generales de depuración del puerto serie tienen un panel de funciones para modificar la fuente del cuadro de recepción del puerto serie, agreguemos uno:

 

1. Primero cree un panel de configuración de fuente

Por ejemplo, si creamos un widget y lo llamamos clase letterFormWindow, QTcreator generará automáticamente archivos .cpp, .hy .ui

 

2. Agregue algunos componentes a la interfaz de IU, como se muestra en la figura:


3. Ahora regrese a la escritura del archivo de la interfaz principal y agregue un botón de acceso directo en la barra de comandos de la interfaz principal

QMenuBar *menuBar = ui->menuBar;
QAction *letterPanlAct = menuBar->addAction("字体设置");

4. Vincula este botón de acceso directo a la creación de la ventana letterFormWindow en este momento, así que haz clic en la tecla de acceso directo para abrir el panel de configuración de fuentes

    connect(letterPanlAct,&QAction::triggered,
            [=] ()
            {
                if(letterFormUi == NULL)
                {
                    letterFormUi = new letterFormWindow;
                    connect(letterFormUi, SIGNAL(sendFont(QFont)), this, SLOT(receiveFont(QFont)));
                }
                letterFormUi->show();
            }
    );

 

5. Preste atención a esta oración connect (letterFormUi, SIGNAL (sendFont (QFont)), this, SLOT (ReceiveFont (QFont))), vincule el evento de función sendFont de la subinterfaz a la función ReceiveFont de la interfaz principal, que se utiliza para conectar la subinterfaz. La fuente configurada se transfiere a la interfaz principal para su modificación.

 

6. Realización de la subinterfaz: archivo de encabezado

class letterFormWindow : public QWidget
{
    Q_OBJECT

public:
    explicit letterFormWindow(QWidget *parent = 0);
    ~letterFormWindow();

private slots:

    void on_buttonBox_accepted();

    void on_fontComboBox_currentFontChanged(const QFont &f);

    void on_spinBox_valueChanged(int arg1);

    void ChangeFont(void);

signals:
    void sendFont(QFont);   //用来传递数据的信号

private:
    Ui::letterFormWindow *letterUi;

    QFont tempFont; //缓存字体

};

Archivo CPP:

#include "letterformwindow.h"
#include "ui_letterformwindow.h"

letterFormWindow::letterFormWindow(QWidget *parent) :
    QWidget(parent),
    letterUi(new Ui::letterFormWindow)
{
    letterUi->setupUi(this);

    letterUi->spinBox->setValue(10);
}

letterFormWindow::~letterFormWindow()
{
    delete letterUi;
}

void letterFormWindow::on_buttonBox_accepted()
{
    emit sendFont(tempFont);    //向主界面传递该字体
    this->hide();
}

void letterFormWindow::on_fontComboBox_currentFontChanged(const QFont &f)
{
    tempFont.setFamily(f.family());
    ChangeFont();
}

void letterFormWindow::on_spinBox_valueChanged(int arg1)
{
    tempFont.setPointSize(arg1);
    ChangeFont();
}

void letterFormWindow:: ChangeFont(void)
{
    letterUi->label->setFont(tempFont);
}

7. Cree la función de recepción de la interfaz principal, reciba la fuente QFont del panel de configuración de fuente y actualice la fuente del texto en el cuadro de recepción del puerto serie

//接收字体窗口
void MainWindow::receiveFont(QFont font)
{
    ui->uartReadPlain->setFont(font);
}

8. Declare la interfaz de la ventana de fuentes en el archivo de encabezado de la interfaz principal (principalmente para abrir la última ventana abierta, no para abrir una nueva cada vez)

private:

    Ui::MainWindow *ui;

    letterFormWindow *letterFormUi = NULL;  //字体窗口

9. De esta manera, puede configurar la fuente, como se muestra a continuación:

Aquí solo se configuran dos atributos de texto: fuente y tamaño. Por supuesto, puede configurar más. Los métodos son los mismos. Solo agregue algunos componentes más para configurar.

Supongo que te gusta

Origin blog.csdn.net/zhangfls/article/details/115265733
Recomendado
Clasificación