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 }

  

原文地址:https://www.cnblogs.com/lican0319/p/10792964.html