狐狸梦见乌鸦

当坚持成为一种习惯,目标将不在遥远```
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

QT学习第一天

Posted on 2012-02-01 07:48  灬啊U  阅读(412)  评论(0编辑  收藏  举报

QT开发,需要的一些知识点

1.构造函数  拷贝构造函数  赋值函数  析构函数

2.继承----派生类得构造函数

3.命名空间  引用

命名空间:

using  namespace std;

class  A

{

         namespace  n1

{

                   void  f(){}

}

。。。。。

cout  << "hello"<<endl;

 

}

或者   无命名空间则 std::cout<< “hello”<<std::endl;

g++  file.cpp –Wall   编译C++程序

 

5.C++中类内的成员函数默认为私有。。。私有只能类内函数使用

6.申明一个类的对象(实例)来调用函数。。。或者将函数加一个 static申明为静态函数,就可以直接类名调用

定义一个类,即产生了一个新的数据类型,类中隐含一个this指针,是本类对象的地址

例如:A  *p = &a; this相当于*p ,只不过this是类内隐含的,而p是人为声明的

 

7.引用:

int  &n = m; 其中的n 就是 m 的引用。之后n和m的地址和值都相同。

作用:传参方便  不需要开销

void  f(const  int  &n) //int &n = m;

 

8.构造函数:无返回值,函数名与类名相同,参数可有可无,函数的重载

当产生对象时,自动调用构造函数。

A()

{

         cont <<""<<endl;

}

A(const  A  &other)

{

         cont <<""<<endl;

 

}

A  b(a);或者 A  b=a; 或者定义一个变量  int  c = 10; int  j (c)则调用第二个构造函数

 

9.QT

对话框

创建可重用的软件模式

接口:类内的共有的方法。客户调用程序可能使用到的标识符

实现:

QT

类库   已经实现好的函数

Gnome ----GDK----C

KDE-----QT------C++

QT优点:优良的跨平台特性,面向对象,丰富的API,大量的开发文档。

信号槽:实现空间通信···

对象树:

A  *P = new  A;// new的两个作用,分配内存空间和调用构造函数

delete  p;// 调用了析构函数  堆上的空间回收 不调用则不析构

p  =  NULL;

 

10.配置QT环境变量

将QT安装包中的3个bin目录路径添加到物品的电脑的path中,分号隔开。

手动书写一个helloword程序:

①     写一个helloword.cpp文档程序

②qmake  -progject  生成一个工程文件

③qmake 生成一个makefile 为民间

④执行mingw32-make

⑤debug\hello.cpp执行程序

 

11.QT的类的派生图

12.信号由moc产生,无需在.cpp中实现方法;moc ----Meta object compiler原对象编译器

13.插槽:是普通的C++成员函数,可以被正常调用。插槽函数也分为三种,public  slots、private  slots和protected  slots

i信号与槽的关联:  QOject::connect(const  QBject  *sender, const  char *signal , const  QBject  *receiver, const  char *member);

ii当信号被发射时,与其相关联的槽将被立即执行。

 

14.自己定义一个信号处理

①头文件中

signals:

         void  changedValue(const  QString  &text);

②定义一个槽

private  slots:

         void  changedText(const  QString  &text);  //方法实现在cpp中

 

③cpp文件中

QObject::connect(this,SIGNAL(changeValue(QString)),

               this,SLOT(changeText(QString)));

④接收到信号后的处理

void SlotWindow::changeText(const QString &text)

{

ui->lineEdit->setText(text);

}

//发送信号

void SlotWindow::on_horizontalSlider_valueChanged(int value)

{

    QString s = QString::number(value);

    emit this->changeValue(s);

}