• QT_day01


    一. QT编程环境

    (1)QT的工具

      ① assistant 帮助手册

      ② qmake -v 查看qt版本

      ③ qmake -project 可以把项目的源文件组织成项目的描述文件 .pro

      ④ qmake 可以根据.pro文件生成Makefile

      ⑤ make 根据Makefile得到目标

      ⑥ designer 设计器 : 所见即所得的可视化界面设计器得到的文件是 ***.ui

        uic: 可以吧ui文件变成.h文件

      ⑦ qtcreator 集成开发工具

    (2)QT的头文件

      目录:/usr/local/Trolltech/Qt-4.8.6/include 

      按照功能划分了不同的模块:QtGui QtCore QtNetwork ...

    (3)QT的库文件

      qt的库文件就/usr/local/Trolltech/Qt-4.8.6/lib是对头文件的分模块实现。

      目录:/usr/local/Trolltech/Qt-4.8.6/lib

    二. 第一个QT程序

      1.建立单独文件夹 写一个CPP程序

      2.qmake -project 可以把项目的源文件组织成项目描述文件 .pro。

      

      3 qmake 根据pro文件得到Makefile

      

      4. make 得到执行文件

     三. qt中帮助文档可以提供的内容

      1 头文件所在的模块

      #include <QLabel>

      #include <QtGui/QLabel>

      2. 一个类的继承关系 继承自谁 被谁继承(QObject)

       QLabel :

      3 类的属性 和 继承的属性

      4 公开的函数

        (1)构造函数

        (2)成员函数

      5 信号 和 槽 函数

      slots signals

      class A{

        public slots: 

        void mySlot();

        public: signals:

        void mySignal();

      };

      信号函数只需要声明  不需要实现

      6 保护函数 

        一般都是事件处理函数

      7 静态函数

        不使用对象就可以直接调用的函数

      8 类的详细声明(不重要)

    四. 中文的显示

      常见编码

        utf-8  gbk  gb2312

      QTextCodec  文本编码类

      /*根据文本编码类 结合编码方式  得到一个编码对象*/

      QTextCodec *code = QTextCodec::codecForName("utf-8");

      /*根据编码对象把数据转换成Unicode编码*/

      QString toUnicode(const char*);

      

     1 #include <QApplication>
     2 #include <QtGui/QLabel>
     3 #include <QTextCodec>
     4 
     5 int main(int argc, char** argv)
     6 {
     7     //查文档构件一个qt应用程序对象
     8     QApplication app(argc, argv);
     9     
    10     /*根据编码方式 创建编码对象*/
    11     QTextCodec *coder = QTextCodec::codecForName("utf-8");
    12         
    13     //构建一个标签对象    
    14     QLabel qlab(coder->toUnicode("你好 qt!"));
    15     qlab.show();
    16         
    17     //程序进入事件循环,等待用户交互
    18     return app.exec();
    19 }

     关于中文不显示的问题:

    解决方法:
    步骤一
    ubuntu安装中文输入法使用。
    1:System Settings–>Language Support–>Install/Remove Languages
    2:选中chinese,点击Apply应用即可,等待-》下载-》安装。
    3:安装ibus框架 sudo apt-get install ibus ibus-clutter ibus-gtk ibus-gtk3 ibus-qt4
    4:启动ibus框架:im-config -s ibus
    6:安装拼音引擎:sudo apt-get install ibus-pinyin
    7:设置ibus框架:sudo ibus-setup -》在input method 里添加 刚刚加入到chinese-pinyin.
    8:添加输入法:system settings...-》Text Entry,勾选show current input source in the menu bar前面的勾,在左面右上角就可以选择输入法了。

    步骤二
    设置QT的配置文件(这部很重要!!!!!)
    1:终端搜索,执行命令,find / -name qtconfig(后来发现如果将QT加入环境变量后直接在任何目录下执行qtconfigj即可,无需查找),找到之后执行,进入到一个页面。这个页面是配置的页面,不管你是什么版本的QT,按照这个命令去搜,应该就会搜的到。

    2:选择song Ti,再保存。
    3:重新构建qt项目,执行,中文就出现了,希望对大家有所帮助。(原博链接:https://blog.csdn.net/leoeitail/article/details/55511668)

    五 创建一个按钮,按钮上显示  关闭标签 

      QPushBotton qpush
      QLabel qlab
      按钮对象的行为 影响 到便签对象。
            函数                           函数

      查看QObject的静态函数,可以完成两个毫不相关的对象的连接。

      bool QObject::connect ( const QObject * sender,
      const char * signal,
      const QObject * receiver,
      const char * method,
      Qt::ConnectionType type = Qt::AutoConnection )

      sender 信号发送者的地址
      signal 发出的信号
      SIGNAL(信号函数名()) //把地址转换成const char *
      receiver 信号接收者的地址
      method 信号处理函数 一般是槽函数
      SLOT(槽函数())
      按钮类型的一个信号函数 可以代表点击
      在QPushBotton中的public slots槽函数中找到 5 public slots inherited from QAbstractButton 追进去,可以找到:
      void clicked ()
      标签类型的一个槽函数,可以代表关闭
      bool close()

    六 父窗口

      如果一个窗口没有指定父窗口,则这个窗口是一个独立窗口。 一旦给一个窗体指定父窗口,则这个窗体会停靠在父窗口上。

      父窗口必须是QWidget类型,或者它的子类型 QMainwindow   QDialog  

    parent.cpp

     1 #include <QApplication>
     2 #include <QtGui/QLabel>
     3 #include <QWidget>
     4 #include <QPushButton>
     5 
     6 int main(int argc, char** argv)
     7 {
     8     QApplication app(argc, argv);
     9     
    10     //创建一个父窗口
    11     QWidget *parent = new QWidget();
    12     
    13     //创建一个标签对象
    14     QLabel *qlab = new QLabel("hello qt!", parent);
    15     //qlab->show();
    16     qlab->move(150, 50);
    17     
    18     //创建一个按钮对象,移动到(150,400)
    19     QPushButton *qpush = new QPushButton("closetab", parent);
    20     qpush->move(150, 400);
    21     //点击按钮,关闭标签
    22     QObject::connect(qpush, SIGNAL(clicked()), qlab, SLOT(close()));
    23     
    24     parent->show();
    25     parent->resize(400, 500);
    26     
    27     return app.exec();
    28 }

      调整组件的大小:

        resize(x, y)

      移动组件的位置:

        move(x, y);

    qqlogin.cpp

     1 #include <QApplication>
     2 #include <QPushButton>
     3 #include <QDialog>
     4 #include <QLineEdit>
     5 
     6 int main(int argc, char** argv)
     7 {
     8     QApplication app(argc, argv);
     9     
    10     //定义组件指针
    11     QDialog *parent;
    12     QLineEdit *username;
    13     QLineEdit *userpasswd;
    14     QPushButton *blogin;
    15     QPushButton *bcancel;
    16     
    17     //组件指针赋值
    18     parent = new QDialog();
    19     parent->resize(400, 300);
    20     username = new QLineEdit(parent);
    21     userpasswd = new QLineEdit(parent);
    22     blogin = new QPushButton("login", parent);
    23     bcancel = new QPushButton("cancel", parent);
    24     
    25     //调整组件位置
    26     username->move(200, 50);
    27     userpasswd->move(200, 100);
    28     blogin->move(50, 200);
    29     bcancel->move(250, 200);
    30     parent->show();
    31     
    32     //点击按钮,关闭窗口
    33     QObject::connect(bcancel, SIGNAL(clicked()), parent, SLOT(close()));
    34     
    35     return app.exec();
    36 }

      

  • 相关阅读:
    kafka-python基本使用
    RabbitMq 消息队列详解
    Socket 编程
    python 进程, 线程 ,协程,锁,协程应用到爬虫的讲解
    python中with的用法
    为什么 Elasticsearch 需要堆内存来存储数据
    面向数据的架构
    跟我一起学Redis之看完这篇比常人多会三种类型实战(又搞了几个小时)
    跟我一起学.NetCore之熟悉的接口权限验证不能少(Jwt)
    跟我一起学.NetCore之WebApi接口裸奔有风险(Jwt)
  • 原文地址:https://www.cnblogs.com/lican0319/p/10792964.html
Copyright © 2020-2023  润新知