zoukankan      html  css  js  c++  java
  • QT第一天学习

    sudo apt-get install libqt4-dev
    回顾:
    面向对象方法:
    封装、继承、多态
    封装:类
    数据和操作
    实现了信息隐藏
    public: 类的内部 类的外部
    private:
    protected:


    class Test
    {
    public:
    Test();
    void show();
    static void showB();
    private:
    int a;
    static int b;
    };
    int Test::b = 0;//静态成员变量的初始化
    void Test::show()
    {
    cout << a << endl;
    }
    构造函数:
    拷贝构造函数(const 类的引用);
    =
    析构函数
    静态成员函数
    Test::showB();

    友元函数
    friend

    运算符重载
    返回类型 operator运算符(参数);

    继承:
    实现代码重用
    继承方式:
    public:公用继承

    private:
    protected:

    多态:
    静态多态性:
    动态多态性:虚函数 virtual

    --------------------------------------------------
    QT :
    官网:www.qt.io
    商业版 开源版
    1.简介:
    Qt 是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架。

    不限于GUI
    文件,网络,数据,图形处理...

    qmake //构建器
    uic
    moc
    qt creator
    qt designer
    assitant QT助手

    1.第一个QT程序
    #include<QApplication>//QApplication:用于管理应用程序
    #include<QWidget>//widget 表示窗体

    int main(int argc,char *argv[])
    {
    //创建一个app对象,管理应用程序
    QApplication app(argc,argv);
    //创建一个窗体w
    QWidget w;
    //把窗体显示出来
    w.show();
    //w.setVisiable(true);
    //exec()让应用程序进入事件循环,等待用户操作
    return app.exec();
    //app.exec();return 0;
    }
    --------------
    qmake -project //生成*.pro文件(工程文件)
    qmake //根据*.pro文件生成 Makefile
    make //生成可执行程序
    ./hello

    注:如果qmake的版本>=5
    那么 在*.pro文件中添加如下代码
    QT += widgets

    2.qt的版本为4.x.x的乱码处理
    QT提供翻译机制:QTextCodec
    1.创建一可以理解utf-8格式的解码器:
    QTextCodec *codec = QTextCodec::codecForName("utf-8");

    2.把解码器交给专司翻译的翻译器
    QTextCodec::setCodecForTr(codec);

    3.使用中文
    w.setWindowTitle(QObject::tr("第一个QT程序"))

    QWidget:
    标签 按钮 单行文本框 下拉框
    QLabel
    QPushButton
    QLineEdit
    QComboBox

    3.父窗体与子窗体
    当父窗体显示出来的时候,它会负责把它所有的子窗体一起显示出来

    当父窗体被销毁时,它会先把它所有的子窗体一起销毁掉


    4.常用快捷键
    对齐:ctrl+i

    5.帮助文档的使用
    版本
    模块
    概要说明
    头文件
    父子类
    属性:不是成员变量,是访问成员变量的函数
    公有函数
    构造函数
    析构函数
    信号与槽
    6.Linux下QtCreator中文输入法问题
    输入命令:env | grep QT
    结果:
    QT_IM_MODULE=ibus
    QT_QPA_PLATFORMTHEME=appmenu-qt5
    QT4_IM_MODULE=xim

    ------------------
    把以下命令写入配置文件.profile
    export QT_IM_MODULE=ibus

    重启一下使生效。

    7.窗体的几何属性
    位置move()
    大小size()
    resize()
    setGeometry(int x, int y, int w, int h)
    setFixedSize()//设置固定大小


    作业:
    1.在程序运行时,窗口能够抖动。
    2.设计一个类,在程序运行时,窗口从最小(100,100)变到最大(800,800),再从最大变回最小.

    代码

    myWidget.h 代码

    #ifndef MYWIDGET_H
    #define MYWIDGET_H

    #include<QPushButton>
    #include<QLabel>
    #include<QTime>

    void sleep(unsigned int msec);

    class myWidget:public QWidget
    {
    public:
    myWidget();
    ~myWidget();
    private:
    QPushButton *btn;
    QLabel *label;
    };
    #endif // MYWIDGET_H

    myWidget.cpp代码

    #include"myWidget.h"
    #include<QDebug>
    #include<QApplication>

    myWidget::myWidget()
    {
    btn=new QPushButton;
    btn->setText("按钮");
    btn->setParent(this);
    btn->sizeHint();

    label=new QLabel("标签",this);
    label->move(100,100);
    btn->move((400-100)/2,(300-100)/2);
    this->resize(400,300);
    for(int i=0;i<10;i++)
    {
    this->move(30,30);
    this->show();
    sleep(300);
    this->move(0,0);
    this->show();
    sleep(300);
    }
    this->move(30,30);
    for(int i=0;i<10;i++)
    {
    this->resize(200,100);
    this->show();
    sleep(300);
    this->resize(400,300);
    this->show();
    sleep(300);
    }
    }

    myWidget::~myWidget()
    {

    }

    void sleep(unsigned int msec)
    {
    QTime dieTime = QTime::currentTime().addMSecs(msec);
    while( QTime::currentTime() < dieTime )
    QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
    }

    hello.cpp代码

    #include<QApplication>
    #include"myWidget.h"

    int main(int argc,char *argv[])
    {
    QApplication app(argc,argv);
    myWidget w;
    return app.exec();
    }

  • 相关阅读:
    Mysql登录错误:ERROR 1045 (28000): Plugin caching_sha2_password could not be loaded
    Docker配置LNMP环境
    Docker安装mysqli扩展和gd扩展
    Docker常用命令
    Ubuntu常用命令
    单例模式的优缺点和使用场景
    ABP 多租户数据共享
    ABP Core 后台Angular+Ng-Zorro 图片上传
    ERROR Error: If ngModel is used within a form tag, either the name attribute must be set or the form control must be defined as 'standalone' in ngModelOptions.
    AbpCore 执行迁移文件生成数据库报错 Could not find root folder of the web project!
  • 原文地址:https://www.cnblogs.com/liudehao/p/5682534.html
Copyright © 2011-2022 走看看