• 在Qt Creator 和在 vs2012 里添加信号和槽


    Qt  的窗口部件通过发射信号(signal)来表明一个用户的动作已经发生了或者是一个状态已经改变了。

    如点击一个QPushButton时,按钮会发送一个clicked()信号,信号可以与函数(在qt里称做槽slot)相连接

    可以把信号理解为c#里的事件

    在vs2012里和在Qt Creator里添加信号和槽不一样,这里把两种环境下怎么添加详细说明一下

    1.在vs2012里添加信号和槽

    新建一个qt的项目QtDemo

     

    在qtdeom.h里添加槽

    private slots:
             void Btn_OpenClick();

    整体代码

    #ifndef QTDEMO_H
    #define QTDEMO_H
    
    #include <QtWidgets/QMainWindow>
    #include "ui_qtdemo.h"
    
    class QtDemo : public QMainWindow
    {
        Q_OBJECT
    
    public:
        QtDemo(QWidget *parent = 0);
        ~QtDemo();
    
    private:
        Ui::QtDemoClass ui;
    private slots:
             void Btn_OpenClick();
    };
    
    #endif // QTDEMO_H

    在qtdemo.cpp里添加实现,这里我们只是弹出一个QMessagBox

    #include "qtdemo.h"
    #include <QMessageBox>
    QtDemo::QtDemo(QWidget *parent)
        : QMainWindow(parent)
    {
        ui.setupUi(this);
        
    }
    
    QtDemo::~QtDemo()
    {
    
    }
    
    void QtDemo::Btn_OpenClick()
    {
        QMessageBox msg;
        msg.setText("HelloWord!");
        msg.exec();
    }

    双击qtdemo.ui打开qt设计师窗体

    我们在窗体上放一个PushButton

    点击编辑信号槽

    点击PushButton手动红色箭头指向窗体

    点击QtDemoClass窗口下的编辑打开信号槽窗体点击添加把我们之前写的方法名称加到里边

    确定关闭后在配置连接窗体下点点击licked()和Btn_OpenClick()后确定

    点击保存关闭qt设计师窗体

    回到vs2012后F5运行

    2.在Qt里添加信号和槽

    打开 Qt Creator新建一个项目MyQtDemo

    点击mainwindow打开设计窗体在窗体上添加一个PushButton

    点击右键先把转到槽

    打开转到槽窗体

    点击clicked()点击确定

    在mainwindow.cpp里添加QMesageBox

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    #include <QMessageBox>
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    }
    
    MainWindow::~MainWindow()
    {
        delete ui;
    }
    
    void MainWindow::on_pushButton_clicked()
    {
        QMessageBox msg;
        msg.setText("Hello Word !");
        msg.setStandardButtons(QMessageBox::Ok|QMessageBox::Cancel);
        msg.setDefaultButton(QMessageBox::Cancel);
        msg.exec();
    }

    运行

  • 相关阅读:
    算法系列:杂项
    算法系列:
    Algo: Dynamic programming
    Algo:
    算法系列:XXX
    算法系列:量子计算与量子通信
    算法系列:Reservoir Sampling
    算法系列:CSAPP 推荐
    算法系列:
    算法系列:geometry
  • 原文地址:https://www.cnblogs.com/li-peng/p/3644812.html
Copyright © 2020-2023  润新知