QT Core | 信号槽01 - GUI上按钮触发应用程序里某个类的函数
生活随笔
收集整理的這篇文章主要介紹了
QT Core | 信号槽01 - GUI上按钮触发应用程序里某个类的函数
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
文章目錄
- 一、前言
- 二、新建一個QT項目
- 2.1、New File or Project
- 2.2、Location
- 2.3、Kits
- 2.4、Details
- 2.5、匯總
- 2.6、項目文件
- 2.7、pro文件
- 三、添加printer類
- 3.1、添加新文件
- 3.2、文件和類
- 3.3、Define Class
- 3.4、Summary
- 四、編寫代碼
- 4.1、printer.h
- 4.2、printer.c
- 4.3、main.cpp
- 五、Debug
一、前言
信號與槽是QT框架引以為豪的機(jī)制之一。熟練使用和理解信號與槽,就能夠設(shè)計出解耦的非常漂亮的程序,有利于增強(qiáng)我們的技術(shù)設(shè)計能力。
所謂信號與槽,實(shí)際就是觀察者模式。對信號與槽的詳細(xì)介紹,請一定要查看博客:https://www.devbean.net/2012/08/qt-study-road-2-signal-slot/
這個博文的目的是使用GUI上的一個按鈕(控件)觸發(fā)應(yīng)用程序的函數(shù)。首先信號與槽的用法一般有兩種:第一種,GUI上的控件(信號)控制應(yīng)用程序干一些事情(函數(shù))。第二種,應(yīng)用程序的函數(shù)(信號)控制應(yīng)用程序里的其他函數(shù)(槽),本次實(shí)驗是第一種用法。
記住,信號和槽本質(zhì)都是返回類型為void的函數(shù)
二、新建一個QT項目
2.1、New File or Project
2.2、Location
2.3、Kits
2.4、Details
2.5、匯總
2.6、項目文件
2.7、pro文件
我一般使用C++14標(biāo)準(zhǔn),而QT默認(rèn)是C++11標(biāo)準(zhǔn)。所以,需要在pro文件上添加一個語句。
三、添加printer類
這個類很簡單,它只有一個功能,就是將自己的名字print出去。
3.1、添加新文件
3.2、文件和類
3.3、Define Class
3.4、Summary
四、編寫代碼
4.1、printer.h
#ifndef PRINTER_H #define PRINTER_H#include <QObject> #include <QDebug> /* 要使用qDebug() */class Printer : public QObject {Q_OBJECT public:explicit Printer(QObject *parent = nullptr);/* 重載一個構(gòu)造函數(shù) */Printer(const QString& name); signals:public slots:/* 定義一個槽函數(shù) */void print_someing(bool A) const;private:QString my_name; };#endif // PRINTER_H4.2、printer.c
#include "printer.h"Printer::Printer(QObject *parent) : QObject(parent) {}Printer::Printer(const QString& name):my_name(name) { }/* 槽函數(shù)的實(shí)現(xiàn)* 1、為什么需要用一個bool類型的入口參數(shù)?是因為按鈕(信號)那邊會發(fā)出一個bool變量過來,且QT規(guī)定槽函數(shù)的入口參數(shù)的個數(shù)必須大于等于信號那一邊。*/ void Printer::print_someing(bool A) const {qDebug() << "My name is:" << this->my_name; }4.3、main.cpp
#include "mainwindow.h" #include <QApplication> #include <QPushButton> #include <QDebug> #include "printer.h"int main(int argc, char *argv[]) {QApplication a(argc, argv);//MainWindow w;QPushButton button("click");Printer printer_A("printer_A"); /* 創(chuàng)建printer_A對象 *//* 將按鈕(信號)與函數(shù)(槽)連接起來 */QObject::connect(&button,&QPushButton::clicked,&printer_A,&Printer::print_someing);button.show();//w.show();return a.exec(); }編譯,生成程序。
五、Debug
總結(jié)
以上是生活随笔為你收集整理的QT Core | 信号槽01 - GUI上按钮触发应用程序里某个类的函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sqlsession.selectlis
- 下一篇: WAMP本地环境升级php版本操作步骤(