1 基本的界面布局: 文字居中 label : alliement 调整布局里面的控件所占控件的比例 laboutstrech 第9课
界面布局步骤: 1. 账号 label 和linedit 设为水平布局 2. 密码 和lineedit设为水平布局。 3 登录和调试 加三个spacer 然后设为水平布局 4. 设置账号 密码的 laboutstrech 也就是布局的对应的控件所占的比例。并且设置QQ登录的label allientment 为center
5. 将账号 密码 登录 取消设为垂直布局。6. 在做垂直布局前,必须把QQ登录的垂直策略 改为fixed否则 会跟着一起变化,导致qq登录在做整体布局后占了很大一个空间。 7. 最后整体做一个垂直布局。
总结: 先设水平布局,再做垂直布局,最后整体做一个布局。
关闭按钮的槽函数实现 :this->close()
2.计算器
步骤:格子用栅格布局
想一想你所想改变的某一控件的属性是所有控件都拥有的吗?如果有那肯定是去Qwidget去找。 如果不是控件独有的属性那么去控件自身找 或者去控件的父类
3. QT的MCV 模式 : 业务逻辑和界面分开 目的:学习面向对象的编程思想。
V 界面 C 控制 M计算器
控制器从界面获取数据 -》 交给M计算器 -》 计算器返回结果给C控制器 。这样要就只需要单独修改model 或者控制器。
3.1. 模型部分代码 :单独新建一个model 类
#include "model.h"
#include <QString>
model::model()
{
public :
model ();
void setNum1(int num);
void setNum2(int num); 、
void setFlag(QString flag);
private:
int num1,num2;
QString flag;
}
void model()
{
this->num1=0;
this->num2=0;
}
void model::setNum1(int num)
{
this->num1=num;
}
void model::setNum2(int num)
{
this->num2=num;
}
void model::setFlag(QString flag)
{
this->flag=flag;
}
QString model::doExpr()
{
int result=0;
//....... 省略计算过程 + - * /
return QString::number(result);
}
//当按下 =号 的时候 调用 doExpr()函数。
当按下 =号 的时候 调用 doExpr()函数。 这样就实现计算和控制分开了
控制器部分代码:
#include "expr.h"
class expr :public QDialog
{
Q_OBJECT
public:
explict: expr(QWidget *parent=0);
~expr();
private:
Ui:: expr *ui;
model *model;
private SLOT:
void getBtn0(); // 第一个数
void getBtn1(); //第二个数
void getBtn2(); //
}
expr::(QWidget *parent=0):QDialog(parent),ui(new Ui::expr) { connect(this->ui->btn_0,SIGNAL(clicked(bool)),this,SLOT(getBtn0)); connect(this->ui->btn_0,SIGNAL(clicked(bool)),this,SLOT(getBtn0)); //------ connect(this->ui->btn_9,SIGNAL(clicked(bool)),this,SLOT(getBtn9)); } void expr:: getBtn0() { this->temp=this->ui->btn_0->text(); //获取按键上对应的数字0 this->ui->lbl_display->setText(this->temp); //显示到最上方的 label 起到提示作用 } void expr:: getBtn1() { } //------ void expr:: getBtn9() { } void expr:: onBtn_equal_clicked() { //------- this->mode->doExpr();// 计算 }
这样就把控制器部分代码 和逻辑部分代码分开了。