QT可视化UI设计原理
看不到的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<纯文本控件却可以>,暂时还不知道为啥,如果好心的网友知道,请在评论区留言,谢谢!!