zoukankan      html  css  js  c++  java
  • qt的信号与槽函数


    关联:
    bool connect ( const?QObject?*?sender, const?char?*?signal, const QObject * receiver, const char * slot, Qt::ConnectionType?type?= Qt::AutoConnection)

    1.一个信号 对应槽函数
    connect(&a1,SIGNAL(mysignals()),&b1,SLOT(mySlot()));


    2.一个信号 对应多个槽函数
    connect(&a1,SIGNAL(mysignals()),&b1,SLOT(mySlot()));
    connect(&a1,SIGNAL(mysignals()),&c1,SLOT(mySlotccc()));
    connect(&a1,SIGNAL(mysignals()),&d1,SLOT(mySlotcccddd()));

    3.多个信号 对应一个槽函数
    connect(&a1,SIGNAL(mysignals()),&b1,SLOT(mySlot()));
    connect(&b1,SIGNAL(mysignalsb()),&b1,SLOT(mySlot()));
    connect(&c1,SIGNAL(mysignalsc()),&b1,SLOT(mySlot()));

    4.一个信号 对应一个信号

    connect(&c1,SIGNAL(mysignalsc()),&b1,SIGNAL(mysignal()));

    注意点:
    1.继承 QObject , Q_OBJECT宏
    2.public slots:包含了任何信号都可以相连的slots。
    protected slots:包含了该类和它的子类的信号才能连接的slots。就是说这些slots只是类的实现的一部分,而不是它和外界的接口。
    private slots:包含了只有该类本身的信号可以连接的slots。就是说这个类非常紧密,甚至它的子类都没有获得连接该类中slots的权利。

    win.h
    
    #ifndef MAINWINDOW_H
    #define MAINWINDOW_H
    
    #include <QMainWindow>
    #include<QTimer>
    #include<QTime>
    
    namespace Ui {
    class MainWindow;
    }
    
    class MainWindow : public QMainWindow
    {
        Q_OBJECT
    
    public:
        explicit MainWindow(QWidget *parent = 0);
        ~MainWindow();
    
    private:
        Ui::MainWindow *ui;
    QTime *mytime;
    QDate *mydate;
    QTimer *mytimer;
    public slots:
        void mytimes();
    
    };
    
    #endif // MAINWINDOW_H
    win.cpp
    #include
    "mainwindow.h" #include "ui_mainwindow.h" #include<QTime> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); mytime = new QTime(); mydate = new QDate(); ui->label_2->setText(mydate->currentDate().toString("yyyy/MM/dd")); mytimer = new QTimer(); connect(mytimer,SIGNAL(timeout()),this,SLOT(mytimes())); mytimer->start(1000); } MainWindow::~MainWindow() { delete ui; } void MainWindow::mytimes() { ui->label->setText(mytime->currentTime().toString("hh:mm:ss")); ui->label_2->setText(mydate->currentDate().toString("yyyy/MM/dd")); }
  • 相关阅读:
    codeforces round#600
    第三章:数据操作
    1143 Lowest Common Ancestor (30 分)
    游标
    1151 LCA in a Binary Tree (30 分)
    jQuery之setInterval()定时器
    C程序第四次作业
    C程序第三次作业
    C程序第二次作业
    C程序第一次作业
  • 原文地址:https://www.cnblogs.com/defen/p/5344154.html
Copyright © 2011-2022 走看看