一、前言
QFontDialog类继承于QDialog,是一个设计用来选择字体的对话框部件。
对话框窗口QDialog
QFontDialog字体选择对话框,设计用来让用户选择某一种字体,一般用于文本编辑窗口、标签显示和一些需要文本输入的场景。你可以直接使用静态函数QFontDialog::getFont()打开对话框,并初始化一些参数,选择完字体之后,根据函数返回值得到QFont封装好的字体属性。
QFontDialog *dia = new QFontDialog(this);
dia->setWindowTitle("my Font dialog");
dia->open(this,SLOT(onColorSelected(const QFont &)));
或者
bool ok;
QFont font = QFontDialog::getFont(
&ok, QFont("Helvetica [Cronyx]", 10), this);
二、QFontDialog
1、currentFont
该属性表示当前选择的字体。
QFont currentFont() const
void setCurrentFont(const QFont &font)
2、options
该属性表示外观的一些显示策略,默认没有策略。如果需要的话,需要在显示之前设置此策略。
QFontDialog::FontDialogOptions options() const
void setOptions(QFontDialog::FontDialogOptions options)
QFontDialog::FontDialogOption 描述 NoButtons 不显示OK和Cancel按钮 DontUseNativeDialog 使用Qt标准界面,不根据系统改变 ScalableFonts 显示可缩放字体 NonScalableFonts 显示不可缩放字体 MonospacedFonts 显示等宽字体 ProportionalFonts 显示比例字体
设置DontUseNativeDialog之后会恢复成标准对话框。
3、公共函数
1)open
打开对话框,并且连接fontSelected信号绑定的槽,当对话框关闭的时候,这个信号槽连接会被断开。
void open(QObject *receiver, const char *member)
示例:打开的同时绑定fontSelected信号的作用槽函数,控制台输出选择的字体信息。
private slots:
void onFontSelected(const QFont &font);
void MainWindow::onFontSelected(const QFont &font)
{
qDebug()<<font;
}
QFontDialog *dia = new QFontDialog(this);
dia->setWindowTitle("my Font dialog");
dia->open(this,SLOT(onFontSelected(const QFont &)));
2)setOption
单独设置某一项显示策略的使能,参考上文options。
void setOption(QFontDialog::FontDialogOption option, bool on = true)
3)testOption
返回某一项显示策略的使能,对应上文setOption。
bool testOption(QFontDialog::FontDialogOption option) const
4)selectedFont
返回当前选择的字体。
QFont selectedFont() const
4、静态公共函数
1)getFont
使用模式状态打开对话框,根据ok值判断是否选择成功,传入默认字体initial,也可以传入对话框显示策略options。
QFont getFont(bool *ok, const QFont &initial, QWidget *parent = nullptr, const QString &title = QString(), QFontDialog::FontDialogOptions options = FontDialogOptions())
QFont getFont(bool *ok, QWidget *parent = nullptr)
5、信号
1)currentFontChanged
用户选择完字体后触发。
void currentFontChanged(const QFont &font)
2)fontSelected
用户在对话框选择字体的时候触发。
void fontSelected(const QFont &font)