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.