QT realiza assistente de depuração serial (7): Criação de painel de configuração de fonte e transferência de valor entre janelas

Postagem anterior:
QT implementa assistente de depuração serial (6): layout de página
 

As ferramentas gerais de depuração de porta serial têm um painel de funções para modificar a fonte da caixa de recepção da porta serial, vamos adicionar um:

 

1. Crie um painel de configuração de fonte primeiro

Por exemplo, se criarmos um widget e chamá-lo de classe letterFormWindow, o QTcreator irá gerar automaticamente arquivos .cpp, .h e .ui

 

2. Adicione alguns componentes à interface de IU, conforme mostrado na figura:


3. Agora volte para a escrita do arquivo da interface principal e adicione um botão de atalho na barra de comando da interface principal

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

4. Vincule este botão de atalho à criação da janela letterFormWindow agora, então clique na tecla de atalho para acessar o painel de configuração de fonte

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

 

5. Preste atenção a esta frase conectar (letterFormUi, SIGNAL (sendFont (QFont)), este, SLOT (receiveFont (QFont))), vincular o evento de função sendFont da subinterface à função receiveFont da interface principal, que é usado para conectar a subinterface. A fonte definida é transferida para a interface principal para modificação.

 

6. Realização de sub-interface: arquivo de cabeçalho

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; //缓存字体

};

Arquivo 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. Crie a função de recepção da interface principal, receba a fonte QFont do painel de configuração de fontes e atualize a fonte do texto na caixa de recepção da porta serial

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

8. Declare a interface da janela de fontes no arquivo de cabeçalho da interface principal (principalmente para abrir a última janela aberta, não para abrir uma nova toda vez)

private:

    Ui::MainWindow *ui;

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

9. Desta forma, você pode definir a fonte, conforme mostrado abaixo:

Apenas dois atributos de texto são definidos aqui: fonte e tamanho. Claro, você pode definir mais. Os métodos são os mesmos. Basta adicionar mais alguns componentes para configurar.

Acho que você gosta

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