zoukankan      html  css  js  c++  java
  • 在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();
    }

    运行

  • 相关阅读:
    [labuladong算法小抄]如何判断回文链表
    [PHP]json_encode中文JSON_UNESCAPED_UNICODE在php5.3返回null
    [javascript] 使用javascript实现webrtc视频聊天demo
    [Linux] grep查找文本时反斜杠转义问题
    [css] 使用css画文件夹icon和话筒icon
    [Go] 开源客服系统以及多商户客服系统-GOFLY在线客服
    [javascript] vue和elementui中的键盘事件
    Elasticsearch 学习之不停止服务,完成升级重启维护操作
    unassigned_shards一直无法分配
    Jenkins+Gradle实现打包时自定义项
  • 原文地址:https://www.cnblogs.com/li-peng/p/3644812.html
Copyright © 2011-2022 走看看