【Qt】Qt学习笔记(一):Qt界面初识

时间:2024-10-06 07:24:11

Qt 是一个跨平台应用程序和 UI 开发框架。使用 Qt 您只需一次性开发应用程序,无须重新编写源代码,便可跨不同桌面和嵌入式操作系统部署这些应用程序。Qt Creator是跨平台的Qt集成开发环境。

 创建项目

 Qt的一些界面,初学时一般选择Qt Widgets Application,将会创建一个窗口类应用程序

非Qt项目,Plain C Application和Plain C++ Application是纯C/C++项目。

创建项目的时候 QWidget,QMainWindow,QDialog,QWidget是所有能看到的窗口或者控件的父类,QMainWindow和QDialog都继承自它。

在这里可以自己更改Class name,然后头文件和源文件系统会自动帮我们修改成和Classname相同的前缀名。

代码编辑区

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>

class Widget : public QWidget//Widget继承自QWidget
{
    Q_OBJECT//宏,引入qt信号和槽的一个宏

public:
    //parent窗口指针,父窗口对象的指针
    //parent为0/NULL,表示当前窗口对象是顶层窗口
    //顶层窗口就是在任务栏可以找到的窗口
    Widget(QWidget *parent = nullptr);
    ~Widget();
};
#endif // WIDGET_H

main.cpp

#include "widget.h"

#include <QApplication>
#include<iostream>

int main(int argc, char *argv[])
{
    //创建一个应用程序对象
    QApplication a(argc, argv);

    //窗口类的一个对象
    Widget w;
    //把窗口显示出来
    w.show();
    // return a.exec();
    std::cout<<"before exec"<<std::endl;

    a.exec();//当不关闭窗口时,程序就在这里
    /*
     * 死循环让程序一直运行,生命循环,消息循环
     * while(1)
     * {
     *  if(点击x按钮)
     *      break;
     *  if(点击最小化按钮)
     *      最小化动作;
     * }
     */
    std::cout<<"after exec"<<std::endl;

    return 0;
}

/*
 * main函数中,QApplication就是Qt里边每个应用程序有且仅有一个的应用程序对象
 *
 *
 */

widget.cpp

#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{}

Widget::~Widget() {}


/*
 *创建项目的时候 QWidget,QMainWindow,QDialog
 *QWidget是所有能看到的窗口或者控件的父类,QMainWindow和QDialog都继承自它
 *
 *
 */

还有,如果我们的构建系统配置文件,如果选择的构建工具是qmake,qmake适用于Qt项目的构建,那么在代码编辑区中还会生成一份后缀名为.pro的文件

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++17

# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

SOURCES += \
    main.cpp \
    hellowidget.cpp

HEADERS += \
    hellowidget.h

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
# 指定项目使用的Qt模块,这里指定了core和gui模块。
QT       += core gui

# 如果Qt的主要版本号大于4,则添加widgets模块。
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

# 设置编译器标准为C++17。
CONFIG += c++17

# 下面的行可以让你的代码在使用已弃用API时编译失败。
# 若要启用此功能,取消注释下面的行。
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # 禁用所有在Qt 6.0.0之前弃用的API

# 指定源文件列表。
SOURCES += \
    main.cpp \
    hellowidget.cpp

# 指定头文件列表。
HEADERS += \
    hellowidget.h

# 默认的部署规则。
# 对于QNX平台,指定目标路径为/tmp/${TARGET}/bin。
qnx: target.path = /tmp/$${TARGET}/bin
# 对于其他Unix系统(不包括Android),指定目标路径为/opt/${TARGET}/bin。
else: unix:!android: target.path = /opt/$${TARGET}/bin
# 如果target.path不是空值,则安装目标到指定路径。
!isEmpty(target.path): INSTALLS += target

 运行后产生这样的窗口,一个白色的窗口界面,我们需要通过设计进行让界面变得更加丰富。

 进入设计模式:双击.ui文件即可进入设计模式

 

相关快捷键

Ctrl+R:编译并运行

Ctrl+B:执行编译操作

Ctrl+Tab:在不同文件之间进行切换

Ctrl+S:保存

Ctrl+/:快速注释

Ctrl+A:全选

Ctrl+C:复制

Ctrl+V:粘贴

Ctrl+X:剪切

Ctrl+鼠标上下滑动:页面放大/缩小