【QT】1.QT可视化UI设计原理

QTCreator中的可视化设计允许通过.ui文件直接连接控件信号到槽。例如,对于单选按钮,可以通过connect函数将多个信号绑定到同一个do_FontColor()槽,改变文本颜色。在实际操作中,遇到问题,发现QTextEdit的connect函数无法显示效果,而使用PlainTextEdit则正常。
摘要由CSDN通过智能技术生成


在这里插入图片描述

看不到的connect函数

在.ui文件中找到控件右击 “转到槽”,QT creater 会自动在头文件和.cpp中生成相应的函数框架
//header
 	void on_checkBox_underline_clicked(bool checked);

    void on_checkBox_italic_clicked(bool checked);

    void on_checkBox_bold_clicked(bool checked);

生成的规则on_信号发送控件对象名_槽_信号

//此为相应的cpp文件生成的方法
void Dialog::on_checkBox_underline_clicked(bool checked)
{
    QFont font =ui->plainTextEdit->font();

    font.setUnderline(checked);

    ui->plainTextEdit->setFont(font);
}


void Dialog::on_checkBox_italic_clicked(bool checked)
{
    QFont font =ui->plainTextEdit->font();

    font.setItalic(checked);

    ui->plainTextEdit->setFont(font);
}


void Dialog::on_checkBox_bold_clicked(bool checked)
{
    QFont font =ui->plainTextEdit->font();

    font.setBold(checked);

    ui->plainTextEdit->setFont(font);
}

单选框,多个信号触发同一个slot

//1.头文件手动定义信号处理函数
 void do_FontColor();
//2.cpp 实现槽函数
void Dialog::do_FontColor()
{
    QPalette plet =ui->plainTextEdit->palette();
    if(ui->radioButton_black->isChecked())
        plet.setColor(QPalette::Text,Qt::black);
    if(ui->radioButton_blue->isChecked())
        plet.setColor(QPalette::Text,Qt::blue);
    if(ui->radioButton_red->isChecked())
        plet.setColor(QPalette::Text,Qt::red);

    ui->plainTextEdit->setPalette(plet);
}
//注册槽,将控件信号和槽函数关联起来
Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
    , ui(new Ui::Dialog)
{
    ui->setupUi(this);
    connect(ui->radioButton_black,SIGNAL(clicked()),
            this,SLOT(do_FontColor()));
    connect(ui->radioButton_red,SIGNAL(clicked()),
            this,SLOT(do_FontColor()));
    connect(ui->radioButton_blue,SIGNAL(clicked()),
            this,SLOT(do_FontColor()));
}

采用可视化方式生成信号,槽关联

切到.ui窗口,手动添加发送者,信号,接受者和槽。
在这里插入图片描述

结尾

开始遇到了点小问题,使用Tex tEdit<富文本控件> 上方的看不到的connect函数触发了,但是看不到效果,换成Plain Text Edit<纯文本控件却可以>,暂时还不知道为啥,如果好心的网友知道,请在评论区留言,谢谢!!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值