虽然老师只让我们会用qt的编译环境,不要求我们去使用他的库,但我觉得这么一款强大的软件并且有他的详细资料,不学习他真是太浪费了。
学习方法介绍:目前的学习资料是网上的教学视频,老师发的pdf,还有官方提供的手册。
废话不多说,让我们开始吧:
1.软件的安装:
我之前安装了qt4,也安装过qt5,但是我还是推荐qt5,因为qt5将所有的东西都集成了。安装就是傻瓜式的。软件下载地址:https://download.qt.io/archive/qt/
2.widget理解
widget就是窗口小部件,在qt的图像设计模式下,你会发现有很多都是窗口部件,比如在qt中常见的对话框、文本框什么的都是widget
3.第一个程序
网上很多教程的第一个程序都是从hello qt开始,我在这里直接跳过,直接上手一个稍微复杂的窗口:
这个窗口由三部分组成。左上角是单行文本输入框,右上角为按钮,下面为多行文本输入框。
1.第一步:
系统默认的主窗口为Mainwindow,但是我们不用他的,我们要自己建一个主窗口,因为这样的话我们就可以在自己新建的主窗口中加入我们自己的东西,所以我们第一步需要去创建自己的主窗口的类。
创建方法:
在项目名字上右键点击新加一个文件,出来后选择c++class,然后输入类的名字为mywin.基类选择QWidget:
第二部:在main.cpp中加上头文件:
#include "mywin.h"
然后写:
然后在他的头文件里面写:
#ifndef MYWIN_H
#define MYWIN_H
#include <QWidget>
#include <QPushButton>//按钮
#include <QLineEdit>//单行文本框
#include <QPlainTextEdit>//多行输入框
class mywin : public QWidget
//因为mywin继承了QWidget,相当于mywin=QWidget,所以mywin就是主窗口。并且Qwidget能用的她都能用
{
Q_OBJECT//这是一个宏,必须要有
private:
QPushButton *m_button;//三个成员,分配空间在构造函数中
QLineEdit *m_lineEdit;
QPlainTextEdit *m_textEdit;
public:
explicit mywin(QWidget *parent = 0);//构造函数,这里只有声明,没有定义,定义写在头文件的源文件中
};
#endif // MYWIN_H
打开mywin.cpp:
#include "mywin.h"
mywin::mywin(QWidget *parent) : QWidget(parent)
{
m_button = new QPushButton(this);
//创建子控件对象时,必须指定其parent窗口,**这里的this就是制定其父窗口为自己**
//虽然new了空间,但是不需要去delete
m_button -> setText("hello,qt");//按钮上的文字
m_button -> setGeometry(310,0,90,50);//设置坐标,前两个为窗口的左上角的坐标,后两个为窗口的长和宽
m_lineEdit = new QLineEdit(this);
m_lineEdit -> setGeometry(0,0,300,50);
m_textEdit = new QPlainTextEdit(this);
m_textEdit -> setGeometry(0,60,400,300);
}
写主函数:
#include <QApplication>
#include "mywin.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
mywin w(NULL);//指定构造函数的参数为null时,自己的窗口就是最大的窗口。
w.setGeometry(100,100,400,300);//设置主窗口的坐标和大小
w.setWindowTitle("HI,ZOUXU");//设置题目
w.show();
return a.exec();
}
/****************
难点:1.布局太难,就是要去计算每个窗口的位置和大小;
2.当拉动父窗口使之改变大小时,使子窗口也随之改变大小
******************/