QT5笔记:2.可视化UI设计

2.可视化UI设计

参考视频:https://www.bilibili.com/video/BV1AX4y1w7Nt

  • 窗口的三种类型,每种类型窗体拥有的方法不同:
    • MainWindow:指的是正常窗体:有菜单栏、状态栏、工具栏的窗体
    • Widget:指的是只是但有个窗体,其余什么都没有,最纯净的窗口
    • Dialog:指的是对话框窗体,拥有对话框可以有的一些操作:接受、拒绝、退出、取消、确认等
QMetaObject::connectSlotsByName(Dialog);//表示使用方法名来建立信号&槽的关系


/**
 * @brief Dialog::on_checkBoxUnderline_clicked
 * @param checked
 * sender checkBoxUnderline
 * signal clicked
 * receiver Dialog
 * slot   on_checkBoxUnderline_clicked(bool checked)
 */
void Dialog::on_checkBoxUnderline_clicked(bool checked)
{
    QFont font = ui->textBox->font();//获取font
    font.setUnderline(checked);//设置下划线
    ui->textBox->setFont(font);//设置font
    //ui->textBox->font().setUnderline(checked);//界面不能这么设置,因为font()的返回值是const,不能改,但是能获取
}

void Dialog::on_checkBoxItalic_clicked(bool checked)
{
    QFont font = ui->textBox->font();//获取font
    font.setItalic(checked);//设置斜体
    ui->textBox->setFont(font);//设置font
}

void Dialog::on_checkBoxBold_clicked(bool checked)
{
    QFont font = ui->textBox->font();//获取font
    font.setBold(checked);//设置加粗
    ui->textBox->setFont(font);//设置font
}

/**
 * @brief Dialog::on_checkBoxUnderline_clicked
 * @param checked
 * sender checkBoxUnderline
 * signal clicked
 * receiver Dialog
 * slot   on_checkBoxUnderline_clicked(bool checked)
 */
void Dialog::on_checkBoxUnderline_clicked(bool checked)
{
    QFont font = ui->textBox->font();//获取font
    font.setUnderline(checked);//设置下划线
    ui->textBox->setFont(font);//设置font
    //ui->textBox->font().setUnderline(checked);//界面不能这么设置,因为font()的返回值是const,不能改,但是能获取
}

void Dialog::on_checkBoxItalic_clicked(bool checked)
{
    QFont font = ui->textBox->font();//获取font
    font.setItalic(checked);//设置斜体
    ui->textBox->setFont(font);//设置font
}

void Dialog::on_checkBoxBold_clicked(bool checked)
{
    QFont font = ui->textBox->font();//获取font
    font.setBold(checked);//设置加粗
    ui->textBox->setFont(font);//设置font
}

/**
 * @description 设置字体颜色
 * 该槽函数是Radio Btn 的槽函数,是手动定义的。目的是让三个Radio Btn 共用一个槽函数
 * 也可以让三个Radio Btn有三个槽函数,只是会让代码显示很臃肿
 * 最后记得手动在窗口构造函数里(或者根据逻辑在代码其他地方)设置connnect ,使界面和槽函数连接起来。
 * QObject::connect(ui->radioButtonBlack, SIGNAL(clicked()), this, SLOT(on_colorRadioBtn_clicked()));
 * QObject::connect(ui->radioButtonRed, SIGNAL(clicked()), this, SLOT(on_colorRadioBtn_clicked()));
 * QObject::connect(ui->radioButtonBlue, SIGNAL(clicked()), this, SLOT(on_colorRadioBtn_clicked()));
 */
void Dialog::on_colorRadioBtn_clicked()
{
    QPalette palette = ui->textBox->palette();
    if(ui->radioButtonBlack->isChecked()){
        palette.setColor(QPalette::Text,Qt::black);
    }
    else if(ui->radioButtonBlue->isChecked()){
        palette.setColor(QPalette::Text,Qt::blue);
    }
    else if(ui->radioButtonRed->isChecked()){
        palette.setColor(QPalette::Text,Qt::red);
    }
    else
        palette.setColor(QPalette::Text,Qt::black);
    ui->textBox->setPalette(palette);
}
posted @ 2022-05-02 14:23  echo_lovely  阅读(291)  评论(0编辑  收藏  举报