Qt的项目分为三个基类:QMainWindow,QWidget,QDialog
注:对于初学者创建Qwidget的项目就可以了
class HelloWidget : public QWidget
{
//引入qt信号和槽的一个宏
Q_OBJECT
public:
//parent窗口指针,父窗口对象的指针
//如果parent为0或者nullptr,表示当前窗口对象是一个顶层窗口
//顶层窗口即为在任务栏可以找到的窗口
HelloWidget(QWidget *parent = nullptr);
~HelloWidget();
private:
};
#引入Qt的模块,core gui
QT += core gui
#如果qt版本大于4,那么引入widgets模块
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
# 表示使用过时的api 则会报错
DEFINES += QT_DEPRECATED_WARNINGS
#要编译的源文件列表
SOURCES += \
main.cpp \
mywidget.cpp
#要编译的头文件列表
HEADERS += \
mywidget.h
# 默认的生成规则
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
类名:单词首字母大写,单词和单词之间直接连接,无需连接字符
MyClass,QPushButton
class MainWindow
Qt中内置的类型,头文件和类命名同名
#include <QString>
QSring str;
#include <QWidget>
QWidget w;
函数名字,变量名:首字母小写,之后每个单词首字母大写,单词和单词之间直接连接,无需连接字符
void connectTheSignal();
类的成员变量设置函数用使用 set+成员变量名,获取成员变量的函数直接用成员变量名(如果是bool类型,有可能会用一些表示状态的术语,如isVisilble,hasFocus):
//普通成员变量设置和获取
void setText(QString text);
QString text()const;
//bool的成员变量设置和获取
void setEnabled(bool enabled);
bool isEnabled()const;
在Qt程序中,最常用的控件之一就是按钮
#include <QPushButton>
QPushButton * btn = new QPushButton;
//设置父亲
btn->setParent(this);
//设置文字
btn->setText("按钮1");
//移动位置
btn->move(100,100);
//第二种创建
QPushButton * btn2 = new QPushButton("按钮2",this);
//重新指定窗口大小
this->resize(600,400);
//设置窗口标题
this->setWindowTitle("第一个项目");
//限制窗口大小
this->setFixedSize(600,400);
通过以上代码可以看出Qt的坐标体系
以左上角为原点(0,0),以向右的方向为x轴的正方向,以向下方向为y轴的正方向
对于嵌套窗口,其坐标是相对于父窗口来说的 顶层窗口的父窗口就是屏幕
QObject是Qt里边绝大部分类的根类
QObject对象之间是以对象树的形式组织起来的 当两个QObject(或子类)的对象建立了父子关系的时候。子对象就会加入到父对象的一个成员变量叫children(孩子)的list(列表)中 当父对象析构的时候,这个列表中的所有对象也会被析构
QWidget是能够在屏幕上显示的一切组件的父类
QWidget继承自QObject,因此也继承了这种对象树关系。一个孩子自动地成为父组件的一个子组件。我们向某个窗口中添加了一个按钮或者其他控件(建立父子关系),当用户关闭这个窗口的时候,该窗口就会被析构,之前添加到他上边的按钮和其他控件也会被一同析构
Qt 引入对象树的概念,在一定程度上解决了内存问题
在 Qt 中尽量在构造的时候就指定 parent 对象,并且大胆在堆上创建
84AA8k-1678505328521)]
QWidget是能够在屏幕上显示的一切组件的父类
QWidget继承自QObject,因此也继承了这种对象树关系。一个孩子自动地成为父组件的一个子组件。我们向某个窗口中添加了一个按钮或者其他控件(建立父子关系),当用户关闭这个窗口的时候,该窗口就会被析构,之前添加到他上边的按钮和其他控件也会被一同析构
Qt 引入对象树的概念,在一定程度上解决了内存问题
在 Qt 中尽量在构造的时候就指定 parent 对象,并且大胆在堆上创建