日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

QT Core | 信号槽01 - GUI上按钮触发应用程序里某个类的函数

發布時間:2025/3/15 c/c++ 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QT Core | 信号槽01 - GUI上按钮触发应用程序里某个类的函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、前言
  • 二、新建一個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框架引以為豪的機制之一。熟練使用和理解信號與槽,就能夠設計出解耦的非常漂亮的程序,有利于增強我們的技術設計能力。

所謂信號與槽,實際就是觀察者模式。對信號與槽的詳細介紹,請一定要查看博客:https://www.devbean.net/2012/08/qt-study-road-2-signal-slot/

這個博文的目的是使用GUI上的一個按鈕(控件)觸發應用程序的函數。首先信號與槽的用法一般有兩種:第一種,GUI上的控件(信號)控制應用程序干一些事情(函數)。第二種,應用程序的函數(信號)控制應用程序里的其他函數(槽),本次實驗是第一種用法。

記住,信號和槽本質都是返回類型為void的函數

二、新建一個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標準,而QT默認是C++11標準。所以,需要在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);/* 重載一個構造函數 */Printer(const QString& name); signals:public slots:/* 定義一個槽函數 */void print_someing(bool A) const;private:QString my_name; };#endif // PRINTER_H

4.2、printer.c

#include "printer.h"Printer::Printer(QObject *parent) : QObject(parent) {}Printer::Printer(const QString& name):my_name(name) { }/* 槽函數的實現* 1、為什么需要用一個bool類型的入口參數?是因為按鈕(信號)那邊會發出一個bool變量過來,且QT規定槽函數的入口參數的個數必須大于等于信號那一邊。*/ 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"); /* 創建printer_A對象 *//* 將按鈕(信號)與函數(槽)連接起來 */QObject::connect(&button,&QPushButton::clicked,&printer_A,&Printer::print_someing);button.show();//w.show();return a.exec(); }

編譯,生成程序。

五、Debug



總結

以上是生活随笔為你收集整理的QT Core | 信号槽01 - GUI上按钮触发应用程序里某个类的函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。