qt的samp2-3注释

dialog.h

#ifndef DIALOG_H
#define DIALOG_H

#include <QDialog>
#include <QCheckBox>
#include <QRadioButton>
#include <QPlainTextEdit>
#include <QPushButton>
//#include <QVBoxLayout>

class Dialog : public QDialog
{
    Q_OBJECT

private:
    QCheckBox   *chkBoxUnder;//字体名
    QCheckBox   *chkBoxItalic;
    QCheckBox   *chkBoxBold;

    QRadioButton    *radioBlack;//字体颜色
    QRadioButton    *radioRed;
    QRadioButton    *radioBlue;

    QPlainTextEdit  *txtEdit;//文字栏

    QPushButton     *btnOK;//确定键
    QPushButton     *btnCancel;//取消键
    QPushButton     *btnClose;//关闭键

    void    iniUI();            //UI创建与初始化
    void    iniSignalSlots();   //初始化信号与槽的链接

private slots:
    void do_chkBoxUnder(bool checked);  //Underline

    void do_chkBoxItalic(bool checked); //Italic

    void do_chkBoxBold(bool checked);   //Bold

    void do_setFontColor();             //设置文字颜色

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

};

#endif // DIALOG_H

dialog.cpp

#include    "dialog.h"
#include    <QHBoxLayout>
#include    <QVBoxLayout>

void Dialog::iniUI()
{
//创建 Underline, Italic, Bold三个CheckBox,并水平布局
    chkBoxUnder=new QCheckBox("Underline");
    chkBoxItalic=new QCheckBox("Italic");
    chkBoxBold=new QCheckBox("Bold");
    QHBoxLayout *HLay1=new QHBoxLayout();
    HLay1->addWidget(chkBoxUnder);
    HLay1->addWidget(chkBoxItalic);
    HLay1->addWidget(chkBoxBold);

//创建 Black, Red, Blue三个RadioButton,并水平布局
    radioBlack=new QRadioButton("Black");
    radioBlack->setChecked(true);           //缺省被选中
    radioRed=new QRadioButton("Red");
    radioBlue=new QRadioButton("Blue");

    QHBoxLayout *HLay2=new QHBoxLayout;
    HLay2->addWidget(radioBlack);
    HLay2->addWidget(radioRed);
    HLay2->addWidget(radioBlue);

//创建 确定, 取消, 退出 三个 PushButton, 并水平布局
    btnOK=new QPushButton("确定");
    btnCancel=new QPushButton("取消");
    btnClose=new QPushButton("退出");
    QHBoxLayout *HLay3=new QHBoxLayout;
    //HLay3->addStretch();
    HLay3->addWidget(btnOK);
    HLay3->addWidget(btnCancel);
    //HLay3->addStretch();
    HLay3->addWidget(btnClose);

//创建 文本框,并设置初始字体
    txtEdit=new QPlainTextEdit;
    txtEdit->setPlainText("Hello world\n手工创建");
    QFont   font=txtEdit->font();   //获取字体
    font.setPointSize(20);          //修改字体大小为20
    txtEdit->setFont(font);         //设置字体

//创建 垂直布局,并设置为主布局
    //    VLay=new QVBoxLayout(this);
    QVBoxLayout *VLay=new QVBoxLayout(this);
   VLay->addLayout(HLay1);         //添加字体类型组,不添加就看不到了,因为这里没有ui文件
    VLay->addLayout(HLay2);         //添加字体颜色组
    VLay->addWidget(txtEdit);       //添加PlainTextEdit
    VLay->addLayout(HLay3);         //添加按键组
    //setLayout(VLay);    //设置为窗口的主布局,在这里注释掉不影响效果
}

void Dialog::iniSignalSlots()
{
//三个设置颜色的 QRadioButton
    connect(radioBlue,SIGNAL(clicked()),this,SLOT(do_setFontColor()));
    connect(radioRed,SIGNAL(clicked()),this,SLOT(do_setFontColor()));
    connect(radioBlack,SIGNAL(clicked()),this,SLOT(do_setFontColor()));

//三个设置字体的 QCheckBox
    connect(chkBoxUnder,SIGNAL(clicked(bool)),this,SLOT(do_chkBoxUnder(bool)));
    connect(chkBoxItalic,SIGNAL(clicked(bool)),this,SLOT(do_chkBoxItalic(bool)));
    connect(chkBoxBold,SIGNAL(clicked(bool)),this,SLOT(do_chkBoxBold(bool)));
//在Qt中,clicked(bool)是一个信号,用于表明复选框(CheckBox)或其他可切换开关类型的控件的状态是否发生了改变。
//具体来说,当复选框被选中或取消选中时,会发出clicked信号。信号的参数是一个布尔值,指示复选框当前是否被选中。

//三个按钮与窗口的槽函数关联
    connect(btnOK,SIGNAL(clicked()),this,SLOT(accept()));
    connect(btnCancel,SIGNAL(clicked()),this,SLOT(reject()));
    connect(btnClose,SIGNAL(clicked()),this,SLOT(close()));
}

void Dialog::do_chkBoxUnder(bool a)//bool类只要有个东西在这里就行,不在乎是不是写的check
{
    QFont   font=txtEdit->font();// 创建一个 QFont 类型的对象 'font',并使其等于 'txtEdit' 对象的字体。'txtEdit' 可能是一个 QTextEdit 或 QPlainTextEdit 类的对象。
    font.setUnderline(a); // 根据 'checked' 参数设置字体是否应有下划线。如果 'checked' 为真,则字体将带有下划线。
    txtEdit->setFont(font);// 将 'txtEdit' 对象的字体设置为我们刚刚修改过的 'font'。这将会在 'txtEdit' 中显示带有 (或不带) 下划线的文本,取决于 'checked' 的值。

}//setUnderline()函数用于将指定的文本或文本区域设置为下划线状态。这个函数接受一个布尔值参数,通常用于指定是否要在给定文本或文本区域中添加下划线。



void Dialog::do_chkBoxItalic(bool checked)
{
    QFont   font=txtEdit->font();
    font.setItalic(checked);
    txtEdit->setFont(font);
}

void Dialog::do_chkBoxBold(bool checked)
{
    QFont   font=txtEdit->font();
    font.setBold(checked);
    txtEdit->setFont(font);
}

// 定义一个名为 'do_setFontColor' 的方法,该方法属于 'Dialog' 类。
void Dialog::do_setFontColor()
{
    // 创建一个 QPalette 类型的对象 'plet',并使其等于 'txtEdit' 对象的调色板。'txtEdit' 可能是一个 QTextEdit 或 QPlainTextEdit 类的对象。
    QPalette   plet=txtEdit->palette();

    // 如果 'radioBlue' 对象(可能是 QRadioButton 或 QCheckBox 对象)被选中,则将文本颜色设置为蓝色。
    if (radioBlue->isChecked())  //isChecked()函数通常用于判断一个复选框或单选按钮是否被选中。它返回一个布尔值,如果选项被选中,那么返回True,否则返回False。
        plet.setColor(QPalette::Text,Qt::blue);

    // 如果 'radioBlue' 对象未被选中,并且 'radioRed' 对象(可能是 QRadioButton 或 QCheckBox 对象)被选中,则将文本颜色设置为红色。
    else if (radioRed->isChecked())
        plet.setColor(QPalette::Text,Qt::red);

    // 如果 'radioBlue' 和 'radioRed' 对象均未被选中,并且 'radioBlack' 对象(可能是 QRadioButton 或 QCheckBox 对象)被选中,则将文本颜色设置为黑色。
    else if (radioBlack->isChecked())
        plet.setColor(QPalette::Text,Qt::black);

    // 如果上述所有条件都不满足(例如,如果没有任何一个单选按钮被选中),则默认将文本颜色设置为黑色。
    else
        plet.setColor(QPalette::Text,Qt::black);

    // 将 'txtEdit' 对象的调色板设置为我们刚刚修改过的 'plet'。这将会在 'txtEdit' 中显示相应颜色的文本。
    txtEdit->setPalette(plet);
}

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    iniUI();            //界面创建与布局
    iniSignalSlots();   //信号与槽的关联
    setWindowTitle("手工创建UI");   //设置窗口标题
}

Dialog::~Dialog()
{
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值