使用vs2017+qt5.12进行学习开发练习,使用UI界面添加菜单栏功能;
目标:对文本框字体加粗。
1. 在UI界面将菜单栏和文本跨添加;
2.在vs中添加相应代码:
在.h中添加slots,声明;
public slots:
void on_actFontBold_triggered(bool checked);
在cpp中进行实现相应功能;
void QtSample1::on_actFontBold_triggered(bool checked)
{
QTextCharFormat fmt;
fmt = ui.textEdit->currentCharFormat();
if (checked)
fmt.setFontWeight(QFont::Bold);
else
fmt.setFontWeight(QFont::Normal);
ui.textEdit->mergeCurrentCharFormat(fmt);
}
对功能和槽函数信号连接;connect(A,SIGNAL,B,SLOT), 功能A根据触发信号对B进行函数功能的实现。
connect(ui.actFontBold, SIGNAL(triggered()), ui.textEdit, SLOT(on_actFontBold_triggered(bool checked)));
编译:
选取文本框中的文本进行加粗操作,发现没变化
多次检查代码后发现没什么问题,然而功能无法实现,到UI界面检查相应属性;
粗体功能对象actFontBold,我的触发条件是cheked,而属性这里一开始默认checkable是没有勾选的,所以在编译后点击也无法实现,这里勾选后编译功能正常实现。
(新加入)
或者直接在代码编辑中加入属性设置,设置check状态;
ui.actFontBold->setCheckable(true);
这里的属性有时容易忽略!!!
正常实现效果字体加粗!