欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > C++ Qt

C++ Qt

2024/11/6 0:00:57 来源:https://blog.csdn.net/JackerCSDN/article/details/143351820  浏览:    关键词:C++ Qt

一、概念

        跨平台的图形应用界面应用程序框架

二、常用快捷键

快捷键解释
F4在对应的.cpp.h之间快速切换
ctrl + b编译程序
ctrl + r运行程序
ctrl + shift + ↑ / ↓向上 / 下移动选中的代码
ctrl + i自动对齐选中的代码

三、对象树

总结:父控件被析构,包含其中的子控件也会被自动析构。

顺序:         构造(先父后子)         析构(先子后父)

  • QObject是以对象树的形式组织起来的。
    • 当你创建一个QObject对象时,QObject构造函数接收一个QObject指针作为参数,这个参数就是parent,也就是父对象指针。
    • 相当于,在创建QObject对象时,会提供一个QObject的父对象。刚刚创建的对象会自动添加到父对象的children()列表中。
    • 父对象析构时,children列表中的对象也会析构。(父对象不是继承意义的父类!

四、常用组件

4.1 QWidget

        创建空窗口

函数名称解释
setWindowTitle(String text)设置窗口标题内容
resize(int width, int height)重新设置窗口大小
setFixedSize(int width, int heigth)设置固定窗口大小
show()显示窗口

4.2 QMainWindow

        

4.3 QPushButton

        QPushButton属于QWidgets模块,需要包含头文件#include<QPushButton>

函数名称解释
QPushButton(String text, QWidget* qw)构造方法,设置文本父窗口
setText(String text)设置按钮文本内容
resize(int width, int height)设置按钮大小
move(int x, int y)设置按钮坐标
setParent(QWidget* qw)设置父窗口
show()独立窗口显示按钮(一般不这样使用)

五、信号和槽

        信号:触发事件的类型

        槽:收到指定信号后的处理函数

5.1 连接方式

        连接信号采用connect函数。声明如下:

函数声明解释

static connect(const QObject* sender

                        const char* signal

                        const QObject* receiver

                        const char* slot

Qt::ConnectionType type = Qt::AutoConnection);

第一个参数sender:发送信号的部件指针

第二个参数signal:信号的类型

第三个参数receiver:信号的接收者

第四个参数slot,也就是处理函数的名称(指针)

 示例如下:(对一个退出按钮设置退出窗口槽)

QWidget *w = new QWidget;//窗口
QPushButton *btn = new QPushButton("退出按钮", w);//按钮connect(btn, &QPushButton::clicked, w, &QWidget::close);

5.2 自定义信号

        在类中声明signals:,并将信号写入其中。

        (信号只写声明不写实现

        (信号返回值void

        (信号可以重载

5.2.1 触发信号

        触发信号采用emit关键字,举例如下:

//触发btn组件的sign01信号
emit btn->sign01();

5.3 自定义槽

        在类中声明public slots:,并将写入其中。

        (槽必须 声明 + 实现

        (槽返回值void

        (槽可以重载

5.4 信号与槽的参数传递

        在connect时,会检查信号与槽的参数类型和数目是否匹配。

  • 如果类型不匹配,Qt会发出警告,并不予连接

        (在Qt4中,参数个数:信号可以大于,但类型必须匹配

  • 如果类型匹配,Qt会自动将信号的参数按序发送给

下边是一个自定义带参信号与槽的简单例子,便于理解:

class MyWidget : public QWidget {
//信号
signals:void mySign(Qstring s);//槽
public slots:void mySlot(Qstring s) {qDebug() << s;}public ://connect函数void initConnect() {//通过函数指针设置 信号 与 槽 的地址//因为如果直接传递函数地址,connect无法识别函数重载方式void (MyWidget:: *sign01)(QString) = &MyWidget::mySign;void (MyWidget:: *slot01)(QString) = &MyWidget::mySign;//连接connect(this, sign01, this, slot01);}//触发信号函数void myEmit() {emit mySign("Hello, CC.");}
}

5.5 多连多

        可以多次调用connect函数,将一个信号连接多个信号,这样可以实现一个出发多个基础槽函数的组合。同理,也可以一个信号连接多个槽函数多个信号连接同一个槽函数

比如:“LEFT信号”对应“左槽”,“UP信号”对应“上槽”。

         当我们需要设计一个“左上信号”,只需要调用两次connect函数即可:

connect(this, up_left, this, UP);
connect(this, up_left, this, LEFT);

 5.6 断开连接

        断开信号与槽、信号与信号的连接,可以采用disconnect函数实现,声明如下:

函数声明解释

static disconnect(const QObject* sender

                        const char* signal

                        const QObject* receiver

                        const char* slot

Qt::ConnectionType type = Qt::AutoConnection);

第一个参数sender:发送信号的部件指针

第二个参数signal:信号的类型

第三个参数receiver:信号的接收者

第四个参数slot,也就是处理函数的名称(指针)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com