Qt5创建标准字体对话框(QFontDialog类)

17 篇文章 0 订阅

接续上节:https://blog.csdn.net/xunye_dream/article/details/83003316

头文件:

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>

class QPushButton;
class QLineEdit;
class QGridLayout;
class QFrame;

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = 0);
    ~Dialog();

private:
    void createFileDialog();
    void createColorDialog();
    void createFontDialog();
    void addGridLayout();
    void registerConnect();

private slots:
    void showFile();
    void showColor();
    void showFont();

private:
    //file dialog
    QPushButton *fileBtn;
    QLineEdit   *fileLineEdit;
    //color dialog
    QPushButton *colorBtn;
    QFrame *colorFrame;
    //font dialog
    QPushButton *fontBtn;
    QLineEdit *fontLineEdit;

    // layout
    QGridLayout *mainLayout;
};

#endif // DIALOG_H

源文件:

#include "dialog.h"
#include <QPushButton>
#include <QLineEdit>
#include <QGridLayout>
#include <QFileDialog>
#include <QFrame>
#include <QColorDialog>
#include <QPalette>
#include <QFontDialog>

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    setWindowTitle(tr("各种标准对话框的实例"));
    createFileDialog();
    createColorDialog();
    createFontDialog();
    addGridLayout();
    registerConnect();
}

void Dialog::createFileDialog()
{
    fileBtn = new QPushButton;
    fileBtn->setText(tr("文本标准对话框实例"));
    fileLineEdit = new QLineEdit;
}

void Dialog::createColorDialog()
{
    colorBtn = new QPushButton;
    colorBtn->setText(tr("颜色标准对话框实例"));
    colorFrame = new QFrame;
    colorFrame->setFrameShape(QFrame::Box);
    colorFrame->setAutoFillBackground(true);
}

void Dialog::createFontDialog()
{
    fontBtn = new QPushButton;
    fontBtn->setText(tr("字体标准对话框实例"));
    fontLineEdit = new QLineEdit;
    fontLineEdit->setText(tr("Welcome!"));
}

void Dialog::addGridLayout()
{
    mainLayout = new QGridLayout(this);
    mainLayout->addWidget(fileBtn, 0, 0);
    mainLayout->addWidget(fileLineEdit, 0, 1);
    mainLayout->addWidget(colorBtn, 1, 0);
    mainLayout->addWidget(colorFrame, 1, 1);
    mainLayout->addWidget(fontBtn, 2, 0);
    mainLayout->addWidget(fontLineEdit, 2, 1);
}

void Dialog::showFile()
{
    QString s = QFileDialog::getOpenFileName(this, "open file dialog", "/",
                    "C++ files(*.cpp)::C files(*.c)::Head files(*.h)");
    fileLineEdit->setText(s);
}

void Dialog::showColor()
{
    QColor c = QColorDialog::getColor(Qt::blue);
    if (c.isValid())
    {
        colorFrame->setPalette(QPalette(c));
    }
}

void Dialog::showFont()
{
    bool ok = true;
    QFont f = QFontDialog::getFont(&ok);
    if (ok)
    {
        fontLineEdit->setFont(f);
    }
}

void Dialog::registerConnect()
{
    connect(fileBtn, SIGNAL(clicked()), this, SLOT(showFile()));
    connect(colorBtn, SIGNAL(clicked()), this, SLOT(showColor()));
    connect(fontBtn, SIGNAL(clicked()), this, SLOT(showFont()));
}

Dialog::~Dialog()
{
    if (fileBtn) delete fileBtn;
    if (fileLineEdit) delete fileLineEdit;
    if (colorBtn) delete colorBtn;
    if (colorFrame) delete colorFrame;
    if (fontBtn) delete fontBtn;
    if (fontLineEdit) delete fontLineEdit;
    if (mainLayout) delete mainLayout;
}

显示结果:

点击字体标准对话框实例按钮,显示结果:

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Qt中实现记事本设置字体,可以使用QFontDialog。以下是实现步骤: 1. 在Qt Creator中创建一个新的Qt Widgets应用程序项目。 2. 在mainwindow.h文件中添加一个QTextEdit控件。 ```cpp #include <QTextEdit> class MainWindow : public QMainWindow { Q_OBJECT public: MainWindow(QWidget *parent = nullptr); private: QTextEdit *textEdit; }; ``` 3. 在mainwindow.cpp文件中创建一个菜单项,并将其与QFontDialog连接。 ```cpp #include <QMenuBar> #include <QMenu> #include <QAction> #include <QFontDialog> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) { // Create a text edit control textEdit = new QTextEdit(this); setCentralWidget(textEdit); // Create a menu bar QMenuBar *menuBar = new QMenuBar(this); setMenuBar(menuBar); // Create a menu QMenu *menu = new QMenu("Format", this); // Create a font action QAction *fontAction = new QAction("Font", this); connect(fontAction, &QAction::triggered, [=]() { bool ok; QFont font = QFontDialog::getFont(&ok, this); if (ok) { textEdit->setFont(font); } }); menu->addAction(fontAction); // Add the menu to the menu bar menuBar->addMenu(menu); } ``` 4. 运行程序,单击“Format”菜单,然后单击“Font”菜单项,将打开QFontDialog对话框,可以选择字体。 注意:在调用QFontDialog::getFont方法时,第一个参数是一个bool型的指针,用于指示用户是否单击了“OK”按钮。如果用户单击了“OK”按钮,将返回所选字体;否则返回默认字体

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值