国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

嵌入式Qt Qt中的信號(hào)處理

這篇具有很好參考價(jià)值的文章主要介紹了嵌入式Qt Qt中的信號(hào)處理。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一.Qt中的信號(hào)處理

Qt消息模型:

- Qt封裝了具體操作系統(tǒng)的消息機(jī)制

- Qt遵循經(jīng)典的GUI消息驅(qū)動(dòng)事件模型

嵌入式Qt Qt中的信號(hào)處理,Qt,qt,信號(hào)處理,開發(fā)語言

Qt中定義了與系統(tǒng)消息相關(guān)的概念;

嵌入式Qt Qt中的信號(hào)處理,Qt,qt,信號(hào)處理,開發(fā)語言?

Qt中的消息處理機(jī)制:

嵌入式Qt Qt中的信號(hào)處理,Qt,qt,信號(hào)處理,開發(fā)語言

Qt的核心 QObject::cinnect函數(shù):

嵌入式Qt Qt中的信號(hào)處理,Qt,qt,信號(hào)處理,開發(fā)語言

Qt中的“新”關(guān)鍵字:

嵌入式Qt Qt中的信號(hào)處理,Qt,qt,信號(hào)處理,開發(fā)語言

實(shí)驗(yàn)1 初探信號(hào)與槽?

#include <QtGui/QApplication>
#include <QPushButton>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);//應(yīng)用程序?qū)ο?    QPushButton b;//按鈕對(duì)象
    b.setText("Click me to quit!");
    b.show();

//通過connect函數(shù) 將按鈕對(duì)象的點(diǎn)擊事件信號(hào) 映射到 a對(duì)象的quit()成員函數(shù)
    QObject::connect(&b, SIGNAL(clicked()), &a, SLOT(quit()));
    return a.exec();
}

?運(yùn)行結(jié)果:

嵌入式Qt Qt中的信號(hào)處理,Qt,qt,信號(hào)處理,開發(fā)語言

二.自定義槽

- 只有QObject的子類才能自定義槽

- 定義槽的類必須在聲明的最開始處使用Q_OBJECT

- 類中的聲明槽時(shí)需要使用slots關(guān)鍵字

- 槽與所處理的信號(hào)在函數(shù)簽名上必須一致

- SIGNAL和SLOT所指定的名稱中:可以包含參數(shù)類型,不能包含具體的參數(shù)名

實(shí)驗(yàn)2 為計(jì)算器界面添加消息處理函數(shù),所有按鈕對(duì)應(yīng)一個(gè)槽,打印同樣log

目錄:

嵌入式Qt Qt中的信號(hào)處理,Qt,qt,信號(hào)處理,開發(fā)語言

QCalculatorUI.h:

#ifndef _QCALCULATORUI_H_
#define _QCALCULATORUI_H_

#include <QWidget>
#include <QLineEdit>
#include <QPushButton>

class QCalculatorUI : public QWidget
{
    Q_OBJECT
private:
    QLineEdit* m_edit;
    QPushButton* m_buttons[20];

    QCalculatorUI();
    bool construct();
private slots:
    void onButtonClicked();
public:
    static QCalculatorUI* NewInstance();
    void show();
    ~QCalculatorUI();
};

#endif

QCalculatorUI.cpp:

#include "QCalculatorUI.h"
#include <QDebug>

QCalculatorUI::QCalculatorUI() : QWidget(NULL, Qt::WindowCloseButtonHint)
{

}

bool QCalculatorUI::construct()
{
    bool ret = true;
    const char* btnText[20] =
    {
        "7", "8", "9", "+", "(",
        "4", "5", "6", "-", ")",
        "1", "2", "3", "*", "<-",
        "0", ".", "=", "/", "C",
    };

    m_edit = new QLineEdit(this);

    if( m_edit != NULL )
    {
        m_edit->move(10, 10);
        m_edit->resize(240, 30);
        m_edit->setReadOnly(true);
    }
    else
    {
        ret = false;
    }

    for(int i=0; (i<4) && ret; i++)
    {
        for(int j=0; (j<5) && ret; j++)
        {
            m_buttons[i*5 + j] = new QPushButton(this);

            if( m_buttons[i*5 + j] != NULL )
            {
                m_buttons[i*5 + j]->resize(40, 40);
                m_buttons[i*5 + j]->move(10 + (10 + 40)*j, 50 + (10 + 40)*i);
                m_buttons[i*5 + j]->setText(btnText[i*5 + j]);

                connect(m_buttons[i*5 + j], SIGNAL(clicked()), this, SLOT(onButtonClicked()));
            }
            else
            {
                ret = false;
            }
        }
    }

    return ret;
}

QCalculatorUI* QCalculatorUI::NewInstance()
{
    QCalculatorUI* ret = new QCalculatorUI();

    if( (ret == NULL) || !ret->construct() )
    {
        delete ret;
        ret = NULL;
    }

    return ret;
}

void QCalculatorUI::show()
{
    QWidget::show();

    setFixedSize(width(), height());
}

void QCalculatorUI::onButtonClicked()
{
    QPushButton* btn = (QPushButton*)sender();

    qDebug() << "onButtonClicked()";
    qDebug() << btn->text();
}

QCalculatorUI::~QCalculatorUI()
{

}

main.cpp:

#include <QApplication>
#include "QCalculatorUI.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QCalculatorUI* cal = QCalculatorUI::NewInstance();
    int ret = -1;

    if( cal != NULL )
    {
        cal->show();

        ret = a.exec();

        delete cal;
    }

    return ret;
}

運(yùn)行結(jié)果:點(diǎn)擊 ”7“? ”8“? ”9“

嵌入式Qt Qt中的信號(hào)處理,Qt,qt,信號(hào)處理,開發(fā)語言?

?文章來源地址http://www.zghlxwxcb.cn/news/detail-835002.html

到了這里,關(guān)于嵌入式Qt Qt中的信號(hào)處理的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 嵌入式實(shí)時(shí)操作系統(tǒng)的設(shè)計(jì)與開發(fā)(信號(hào)量學(xué)習(xí))

    除了臨界點(diǎn)機(jī)制、互斥量機(jī)制可實(shí)現(xiàn)臨界資源的互斥訪問外,信號(hào)量(Semaphore)是另一選擇。 信號(hào)量與互斥量的區(qū)別 對(duì)于互斥量來說,主要應(yīng)用于臨界資源的互斥訪問,并且能夠有效地避免優(yōu)先級(jí)反轉(zhuǎn)問題。 對(duì)于信號(hào)量而言,它雖然也能用于臨界資源的互斥訪問,但是不能

    2024年02月08日
    瀏覽(30)
  • 嵌入式QT- QT使用MQTT

    嵌入式QT- QT使用MQTT

    目錄 一、MQTT介紹 二、MQTT概念 ? 2.1 訂閱(Subscribtion) ? 2.2?會(huì)話(Session) ? 2.3 主題名(Topic Name) ? ?2.4 主題篩選器(Topic Filter) ? ?2.5 消息訂閱 三、MQTT中的角色 3.1 客戶端 3.2 服務(wù)器 四、X86平臺(tái)安裝mosquitto 4.1 下載?mosquitto 服務(wù)器 4.2?下載 mosquitto 客戶端 4.3?mosquitto 命令

    2024年02月13日
    瀏覽(22)
  • 嵌入式Qt 第一個(gè)Qt項(xiàng)目

    嵌入式Qt 第一個(gè)Qt項(xiàng)目

    打開Qt Creator 界面選擇 New Project或者選擇菜單欄 【文件】-【新建文件或項(xiàng)目】菜單項(xiàng) ??彈出New Project對(duì)話框,選擇Qt Widgets Application 選擇【Choose】按鈕,彈出如下對(duì)話框 設(shè)置項(xiàng)目名稱和路徑,按照向?qū)нM(jìn)行下一步? ?選擇編譯套件 向?qū)?huì)默認(rèn)添加一個(gè)繼承自QMainWindow的類,可

    2024年02月20日
    瀏覽(17)
  • 【嵌入式——QT】容器類

    Qt提供了基于模板的容器類,這些容器類可以用于存儲(chǔ)指定類型的數(shù)據(jù)項(xiàng),Qt的容器類比標(biāo)準(zhǔn)模板庫(STL)中的容器類更輕巧、安全和易于使用。它們還是線程安全的,它們作為只讀容器時(shí)可被多個(gè)線程訪問。 容器類是基于模板的類,如常用的容器類QList,T是一個(gè)具體的類型,可

    2024年02月22日
    瀏覽(24)
  • 嵌入式 QT 界面布局管理

    嵌入式 QT 界面布局管理

    目錄 1、實(shí)例程序功能 2、界面組件布局 2.1 界面組件的層次關(guān)系 2.2 布局管理 2.3 伙伴關(guān)系和Tab順序 ? ? ? 創(chuàng)建一個(gè) Widget Application 項(xiàng)目 samp2_2, 在創(chuàng)建窗體時(shí)選擇基類 QDialog ,生成的類命名為 QWDialog ,并選擇生成窗體。 ? ? 如 此 新建 的項(xiàng) 目 samp2_2 有一 個(gè)界 面文 件 qwdi

    2024年02月04日
    瀏覽(29)
  • 嵌入式:QT Day1

    嵌入式:QT Day1

    源碼: widge.h ?widge.cpp ?main.cpp

    2024年02月15日
    瀏覽(24)
  • 嵌入式:QT Day4

    嵌入式:QT Day4

    源碼: widget.h widget.cpp main.cpp

    2024年02月14日
    瀏覽(25)
  • 嵌入式:QT Day2

    嵌入式:QT Day2

    源碼: widget.h second.h widget.cpp second.cpp main.cpp ? ?

    2024年02月15日
    瀏覽(25)
  • 【嵌入式——QT】QStyledItemDelegate用法詳解

    【嵌入式——QT】QStyledItemDelegate用法詳解

    QStyledItemDelegate是所有Qt item視圖的默認(rèn)委托,在創(chuàng)建它們時(shí)就會(huì)被安裝在它們上面。 QStyledItemDelegate類是模型/視圖類之一,是Qt模型/視圖框架的一部分。委托允許項(xiàng)目的顯示和編輯獨(dú)立于模型和視圖進(jìn)行開發(fā)。 模型中數(shù)據(jù)項(xiàng)的數(shù)據(jù)被賦值為ItemDataRole;每個(gè)物品可以為每個(gè)角色存

    2024年01月23日
    瀏覽(28)
  • 嵌入式I2C 信號(hào)線為何加上拉電阻(圖文并茂)

    嵌入式I2C 信號(hào)線為何加上拉電阻(圖文并茂)

    IIC 是一個(gè)兩線串行通信總線,包含一個(gè) SCL 信號(hào)和 SDA 信號(hào),SCL 是時(shí)鐘信號(hào),從主設(shè)備發(fā)出,SDA 是數(shù)據(jù)信號(hào),是一個(gè)雙向的,設(shè)備發(fā)送數(shù)據(jù)和接收數(shù)據(jù)都是通過 SDA 信號(hào)。 ? 在設(shè)計(jì) IIC 信號(hào)電路的時(shí)候我們會(huì)在 SCL 和 SDA 上加一個(gè)上拉電阻。 ? 今天就來分享下,為什么要在

    2024年02月19日
    瀏覽(23)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包