qt入门精讲教程 学习1

1 基本的界面布局: 文字居中   label : alliement  调整布局里面的控件所占控件的比例 laboutstrech  第9课

qt入门精讲教程 学习1_第1张图片       qt入门精讲教程 学习1_第2张图片

界面布局步骤: 1.  账号 label 和linedit 设为水平布局  2. 密码 和lineedit设为水平布局。 3  登录和调试 加三个spacer 然后设为水平布局  4. 设置账号 密码的 laboutstrech 也就是布局的对应的控件所占的比例。并且设置QQ登录的label allientment 为center

5.  将账号 密码 登录 取消设为垂直布局。6. 在做垂直布局前,必须把QQ登录的垂直策略 改为fixed否则 会跟着一起变化,导致qq登录在做整体布局后占了很大一个空间。 7. 最后整体做一个垂直布局。

总结: 先设水平布局,再做垂直布局,最后整体做一个布局。 

关闭按钮的槽函数实现   :this->close()

2.计算器

qt入门精讲教程 学习1_第3张图片

步骤:格子用栅格布局 

想一想你所想改变的某一控件的属性是所有控件都拥有的吗?如果有那肯定是去Qwidget去找。 如果不是控件独有的属性那么去控件自身找 或者去控件的父类

3. QT的MCV 模式 : 业务逻辑和界面分开 目的:学习面向对象的编程思想。

V 界面  C 控制  M计算器  

控制器从界面获取数据 -》 交给M计算器 -》 计算器返回结果给C控制器   。这样要就只需要单独修改model 或者控制器。

3.1. 模型部分代码  :单独新建一个model  类  

#include "model.h"
#include 
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();// 计算
}

这样就把控制器部分代码 和逻辑部分代码分开了。

 

 

 

 

你可能感兴趣的:(读书,qt,c++)