一、我们希望将系统的字体添加到下拉列表中,并且在工具栏中显示,效果如下图所示:
二、单纯的用QComboBox是不能获取字体样式的,QComboBox仅仅是一个下拉列表,并不能获取系统字体,Qt专门提供了一个类QFontComboBox来获取下拉式的系统字体;
参考Qt助手查看QFontComboBox类的第一句是The QFontComboBox widget is a combobox that lets the user select a font family.另外需要配合使用的就是QTextCharFormat类,因为它提供了setFontFamily()函数来设置系统字体;
三、将下拉列表添加到工具栏中必须用代码,不能在ui界面拖动添加。类似的还有QSpinBox、QLabel
四、添加头文件
#include <QSpinBox>
#include <QFontComboBox>
#include <QLabel>
#include <QTextCharFormat>
五、定义两个指针,添加槽函数
private:
Ui::MainWindow *ui;
QSpinBox *spinBox;
QFontComboBox *comboBox;
private slots:
void spinBoxSlot(int FontSize);
void comboBoxSlot(const QString &arg1);
六、cpp文件
#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
ui->mainToolBar->addWidget(new QLabel("字体大小"));
spinBox = new QSpinBox;
spinBox->setValue(ui->textEdit->font().pointSize());
ui->mainToolBar->addWidget(spinBox);
ui->mainToolBar->addWidget(new QLabel("字体"));
comboBox = new QFontComboBox;
comboBox->setMinimumWidth(150);
ui->mainToolBar->addWidget(comboBox);
connect(spinBox,SIGNAL(valueChanged(int)),this,SLOT(spinBoxSlot(int)));
connect(comboBox,SIGNAL(currentIndexChanged(QString)),this,SLOT(comboBoxSlot(const QString &)));
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::spinBoxSlot(int FontSize)
{
QTextCharFormat fmt;
fmt.setFontPointSize(FontSize);
ui->textEdit->mergeCurrentCharFormat(fmt);
}
void MainWindow::comboBoxSlot(const QString &arg1)
{
QTextCharFormat fmt;
fmt.setFontFamily(arg1);
ui->textEdit->mergeCurrentCharFormat(fmt);
}