Qt——基础操作(快捷键、工程文件,按钮对象树)

本文介绍Qt框架的基础知识,包括Qt的特性、快捷键、模块等内容,并详细讲解如何使用Qt创建程序,涉及命名规范、工程文件配置及界面元素的创建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Qt概述

Qt:是一个跨平台的C++图形用户界面应用程序框架

  • 完全面向对象的,容易扩展,并允许真正的组件开发

Qt快捷键

  • 注释:Ctrl+/

  • 运行:Ctrl+r

  • 编译:Ctrl+b

  • 字体缩放:Ctrl+鼠标滚轮

  • 查找:Ctrl+f

  • 整行移动:Ctrl+shift+上下移动键

  • 帮助文档:F1

  • 自动对齐:Ctrl+i

  • 同名文件.h和.app文件之间的切换:F4

  • 帮助文档

    • 第一种方式 F1
    • 第二种 左侧按钮
    • 第三种 C:\Qt\Qt5.6.0\5.6\mingw49_32\bin

Qt模块

  • core:源代码
  • GUI:界面支持
  • widgets:窗体支持
  • network:网络模块
  • sql:数据库模块.
  • Serial:串口编程
  • multimedia:多媒体(音频、视频、摄像头)

创建QT程序

命名规范

  • 类名 首字母大写,单词和单词之间首字母大写
  • 函数名 变量名称 首字母小写,单词和单词之间首字母大写

main.cpp

#include "widget.h"
#include <QApplication>  // 包含一个应用程序类的头文件

// main程序入口,argc命令行变量的数量,argv命令行变量的数量
int main(int argc, char *argv[])
{
    // a应用程序对象,在qt中,应用程序对象有且仅有一个
    QApplication a(argc, argv);
    
    // 窗口对象,通过类来实例化一个窗口对象,Widget的父类为QWidget
    Widget w;
    
    // 窗口对象,默认不显示,只有调用show方法才显示
    w.show();
    
    // 让应用程序a,进入消息循环
    // 消息循环,让当前代码阻塞到这行,点左上角的×才退出循环,
    return a.exec();
}

运行结果为:
在这里插入图片描述

  • 创建第一个Qt程序

    1. 点击创建项目后,选择项目路径以及 给项目起名称
    2. 名称 - 不能有中文 不能有空格
    3. 路径 - 不能有中文路径
    4. 默认创建有窗口类,myWidget,基类有三种选择: QWidget 、QMainWindow、QDialog
  • main函数

    1. QApplication a 应用程序对象,有且仅有一个
    2. myWidget w实例化窗口对象,默认不会显示出来,需要调用show方法显示
    3. w.show()调用show函数 显示窗口
    4. return a.exec() 让应用程序对象进入消息循环机制中,代码阻塞到当前行

工程文件 ~project.pro

在工程文件中,除非你知道你所要添加的是什么,否则不要添加任何东西,注释也不要添加。

工程目录为

#-------------------------------------------------
#
# Project created by QtCreator 2018-01-05T09:31:24
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = 01_FirstProject
TEMPLATE = app

 
SOURCES += main.cpp\
        mywidget.cpp \
    mypushbutton.cpp

HEADERS  += mywidget.h \
    mypushbutton.h

  • QT += core gui
    Qt包含的模块,添加核心组件

  • greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
    // 大于4版本以上 包含 widget模块

  • TARGET = 01_FirstProject
    // target:目标 生成的.exe程序的名称
    // 想换一个文件名只需把 = 后面的名称改了之后重新运行,重启后不会删除原来的而是创建一个新的名字为你的命名

  • TEMPLATE = app
    // TEMPLATE模板 应用程序模板 Application

  • app -建立一个应用程序的makefile。这是默认值,所以如果模板没有被指定,这个将被使用。

  • lib - 建立一个库的makefile。

  • vcapp - 建立一个应用程序的VisualStudio项目文件。

  • vclib - 建立一个库的VisualStudio项目文件。

  • subdirs -这是一个特殊的模板,它可以创建一个能够进入特定目录并且为一个项目文件生成makefile并且为它调用make的makefile。

  • SOURCES += main.cpp\
    //源文件 mywidget.cpp
    // 将文件添加到管理文件

  • HEADERS += mywidget.h
    //头文件

头文件


#include <QWidget> //包含头文件 QWidget 窗口类

class myWidget : public QWidget  // myWidget继承QWidget
{
    Q_OBJECT // Q_OBJECT宏,允许类中使用信号和槽的机制

public:
    myWidget(QWidget *parent = 0); //构造函数
    ~myWidget(); //析构函数
};

#endif // MYWIDGET_H

按钮创建QPushButton

  1. #include < QPushButton > //按钮控件的头文件
  2. 创建按键:QPushButton * 按键指针 = new QPushButton
  3. 显示按钮:
    • show() // 调用show方法来显示窗口,但是他是以顶层的方式来弹出窗口
    • setParent(this)

设置按钮的参数:

  • 设置按钮内容:按钮->setText(“要显示的内容”)
  • 设置按钮位置:按钮->move(a,b)
  • 重新制定按钮大小:按钮->resize(a,b)
    设置窗口的参数:(按钮也可以调用下列方法)
  • 重置窗口大小:resize(600,400);
  • 设置固定窗口大小:setFixedSize(a,b)(生成的窗口是可以拖拽改变大小的,如果不想让他改变可以调用该方法)
  • 设置窗口标题:setWindowTitle("标题内容")

#include "mywidget.h"
#include <QPushButton> //按钮控件的头文件

myWidget::myWidget(QWidget *parent): QWidget(parent)
{
    //创建一个按钮
    QPushButton * btn = new QPushButton;
    btn->show(); //show以顶层方式弹出窗口控件,就是这个show会单独一个窗口

    //让btn对象 依赖在 myWidget窗口中
    btn->setParent(this);
    //显示文本
    btn->setText("第一个按钮");
    

旁边的小窗口就是以顶层方式弹出的窗口,它不会依附于主函数的大窗口。
在这里插入图片描述依附于大窗口并显示文本的按钮运行结果:
在这里插入图片描述

  • 也可以直接创建依附于主窗口的按钮
    QPushButton * 名 = new QPushButton("按钮上显示的内容" , this )
 //创建第二个按钮 按照控件的大小创建窗口
    QPushButton * btn2 = new QPushButton("第二个按钮",this);
    //移动btn2按钮
    btn2->move(100,100);
    // 使第二个按钮的位置在(100,,100)的位置

    //重新制定按钮大小
    btn2->resize(50,50);

    //重置窗口大小
    resize(600,400);

    //设置固定窗口大小
    setFixedSize(600,400);

    //设置窗口标题
    setWindowTitle("大大的窗口");

窗口标题会在这:
在这里插入图片描述


对象树

当创建的对象在堆区时候,如果指定的父亲是QObject派生下来的类或者QObject子类派生下来的类,可以不用管理释放的操作,将对象会放入到对象树中。

这相当于,在创建QObject对象时,可以提供一个其父对象,我们创建的这个QObject对象会自动添加到其父对象的children()列表。当父对象析构的时候,这个列表中的所有对象也会被析构。(注意,这里的父对象并不是继承意义上的父类!)

当创建的对象在堆区时候,如果指定的父亲是QObject派生下来的类或者QObject子类派生下来的类,可以不用管理释放的操作,将对象会放入到对象树中。
一定程度上简化了内存回收机制

Qt窗口坐标体系

坐标体系:
左上角为原点(0,0),X向右增加,Y向下增加。
在这里插入图片描述

对于嵌套窗口,其坐标是相对于父窗口来说的。

标签控件:QLabel
单行输入框:QLineEdit.
按钮控件:QPushButton.

当行输入框

头文件:#include <QLineEdit>
项目模块:QT += widgets

### Qt Designer 中设置快捷键的方法 在 Qt Designer 中,可以通过多种方式为控件设置快捷键。以下是具体实现方法: #### 方法一:直接通过代码设置快捷键 可以直接在 C++ 或 Python (PyQt/PySide) 的代码中调用 `setShortcut` 函数来为按钮或其他继承自 QAbstractButton 的控件绑定快捷键。 例如,在 PyQt 中可以这样操作: ```python left_button.setShortcut(QKeySequence(Qt.Latin1String("Left"))) # 绑定 Left 键作为快捷键[^1] right_button.setShortcut(QKeySequence(Qt.Latin1String("Right"))) # 绑定 Right 键作为快捷键 ``` 上述代码展示了如何利用 `QKeySequence` 来指定按键组合并将其分配给特定的按钮。 --- #### 方法二:通过 Qt Designer 属性编辑器设置快捷键 虽然 Qt Designer 默认不提供直观的方式用于设置快捷键,但某些情况下可以在属性窗口找到名为 **shortcut** 的字段(仅限于部分标准控件)。如果目标控件支持该属性,则可在此处输入相应的键盘序列字符串表示法(如 `"Ctrl+S"` 或 `"F5"`),从而完成快捷键配置。 对于那些未暴露此选项的标准组件或者完全由开发者自行设计的新类型而言,则需采用更灵活的技术手段——即下面介绍的内容... --- #### 方法三:借助 QShortcut 实现高级定制化功能 为了增强灵活性以及适应更多场景需求, 可以创建独立的对象实例并与目标 widget 关联起来共同工作: ```cpp // 创建一个新的快捷键对象并将它链接至某个动作上. QShortcut *sc = new QShortcut(QKeySequence(tr("Ctrl+P")), ui->pushButton); connect(sc, &QShortcut::activated, ui->pushButton, &QPushButton::click); // 当激活时模拟一次鼠标单击行为.[^2] ``` 这里演示了怎样构建一个基于 Ctrl+P 的全局响应机制,并且每当检测到匹配事件发生的时候都会自动执行 pushButton 控制上的 click() 虚拟槽函数逻辑. 同样地,在 PyQT/Pyside 下也可以轻松移植这段思路: ```python sc = QtWidgets.QShortcut(QtGui.QKeySequence('Ctrl+P'), self.ui.pushButton) sc.activated.connect(self.ui.pushButton.click)[^2] ``` 以上片段说明了即使面对复杂情况仍然能够依靠编程技巧达成预期效果的同时保持良好的用户体验一致性水平线之上! --- ### 总结 综上所述,无论是简单项目还是大型应用开发过程中遇到关于界面交互方面的需求变更挑战之时,都可以考虑运用本文提到的各种解决方案之一去妥善解决实际问题所在之处。记住每种途径都有各自适用范围及其局限性特点,请根据具体情况合理选用最为合适的那一种吧!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值