0、引言
常言说得好,学好C++,走遍天下都不怕。在学习C++的过程中,不得不说,面向对象和面向过程的思想确实有些不同,本文根据吴健老师的QT教程所写,属于学习笔记,仅为备忘及心得,如有错误,还望指出,感谢。
工程文件点这里
1、MVC模式
百度上有较为详尽的资料,再次不做赘述,仅为本文做学习笔记所用
Model:数据处理
文件名:model.cpp / model.h
说明:用于计算器的计算部分(由Controller传入\出数据)
View:界面/交互
文件名:mainwindow.ui
说明:该部分主要是使用QT设计师创建(各个控件的属性重要)
Controller:控制/功能
文件名:mainwindow.cpp / mainwindow.h
说明:该部分作为连接model和View两个部分
2、交互界面备忘
上图1为本文计算器所采用的交互界面
2.1、label控件
保持右对齐:Qlabel属性中,选中alignment->horizontal->alignright
背景颜色与字体:QWidget属性中,选中stylesheet->add color下拉->background-color
确认objectName
2.2、按钮
确定ObjectName和Qabstractbutton中的text文本(此处属性关系Controller部分的调用)
直接采用go to slot的方法连接信号槽,这里需要注意选定事件(如按键按下),函数名称会是你的ObjectName。
3、代码
3.1、手写信号槽
备注:
this指针只能用在类的内部,通过 this 可以访问类的所有成员,包括 private、protected、public 属性的。
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
//连接ui的pushbotton_0,触发信号为按键被按下(bool),对应槽函数为getBtn0;
connect(this->ui->pushButton_0, SIGNAL(clicked(bool)),this,SLOT(getBtn0()) );
this->tmp = "";//初始化中间变量
this->mode=new model;//理解不足,留坑(mode为model类的指针,目的应该是为了调用modele类内部成员)
}
void MainWindow::getBtn0