• 按钮点击获取文本框输入

     void Dialog::on_pushButton_clicked()
    {
    //获取文本输入
    QString vstr = ui->lineEdit->text(); //判断是否转换成功
    bool isok;
    //转换
    int value = vstr.toInt(&isok);
    double area = value*value*PI;
    QString tempstr;
    ui->lineEdit_2->setText(tempstr.setNum(area));
    }
  • 文本框内容改变执行的操作
    void Dialog::on_lineEdit_textChanged(const QString &arg1)
    {
    this->on_pushButton_clicked();
    }

手动实现QT的界面

  • dialog.h添加按钮,文本框,标签等头文件

     #include <QDialog>
    #include <QPushButton>
    #include <QLineEdit>
    #include <QLabel>
  • 在dialog.h类中添加按钮,文本框,标签的指针,并添加按钮的触发函数
     private:
    Ui::Dialog *ui;
    //图形控件
    QLabel *label1,*label2;
    QLineEdit *edit1,*edit2;
    QPushButton *button; //触发机制
    private slots:
    void showit();
  • 在dialog.cpp中初始化,并创建布局
  • 创建布局头文件
     #include "QGridLayout"//布局
  • 初始化
     //加上this显示在当前窗口
    button = new QPushButton(this);
    button->setText(tr("计算"));
    //button->show();
    button->resize(,); edit1 = new QLineEdit(this); edit2 = new QLineEdit(this); label1 = new QLabel(this); label1->setText("输入半径:"); label2 = new QLabel(this); label2->setText("输出面积:");
  • 创建布局
      //网格布局
    QGridLayout *mylayout = new QGridLayout(this);
    mylayout->addWidget(label1,,);
    mylayout->addWidget(label2,,);
    mylayout->addWidget(edit1,,);
    mylayout->addWidget(edit2,,);
    mylayout->addWidget(button,,);
  • 关联按钮的函数或者文本框变化的函数
      //clicked触发         关联
    connect(button,SIGNAL(clicked(bool)),this,SLOT(showit()));
    connect(edit1,SIGNAL(textChanged(QString)),this,SLOT(showit()));
  • 按钮点击函数实现
     void Dialog::showit()
    {
    //获取文本输入
    QString vstr = edit1->text(); //判断是否转换成功
    bool isok;
    //转换
    int value = vstr.toInt(&isok);
    double area = value*value*PI;
    QString tempstr;
    edit2->setText(tempstr.setNum(area));
    }

完整代码:

  • dialog.h

     #ifndef DIALOG_H
    #define DIALOG_H #include <QDialog>
    #include <QPushButton>
    #include <QLineEdit>
    #include <QLabel> namespace Ui {
    class Dialog;
    } class Dialog : public QDialog
    {
    Q_OBJECT public:
    explicit Dialog(QWidget *parent = );
    ~Dialog(); private:
    Ui::Dialog *ui;
    //图形控件
    QLabel *label1,*label2;
    QLineEdit *edit1,*edit2;
    QPushButton *button; //触发机制
    private slots:
    void showit();
    }; #endif // DIALOG_H
  • dialog.cpp
     #include "dialog.h"
    #include "ui_dialog.h"
    #include "QGridLayout"//布局
    #define PI 3.14159 Dialog::Dialog(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::Dialog)
    {
    //加上this显示在当前窗口
    button = new QPushButton(this);
    button->setText(tr("计算"));
    //button->show();
    button->resize(,); edit1 = new QLineEdit(this); edit2 = new QLineEdit(this); label1 = new QLabel(this); label1->setText("输入半径:"); label2 = new QLabel(this); label2->setText("输出面积:"); //网格布局
    QGridLayout *mylayout = new QGridLayout(this);
    mylayout->addWidget(label1,,);
    mylayout->addWidget(label2,,);
    mylayout->addWidget(edit1,,);
    mylayout->addWidget(edit2,,);
    mylayout->addWidget(button,,); //clicked触发 关联
    connect(button,SIGNAL(clicked(bool)),this,SLOT(showit()));
    connect(edit1,SIGNAL(textChanged(QString)),this,SLOT(showit()));
    ui->setupUi(this);
    } Dialog::~Dialog()
    {
    delete ui;
    } void Dialog::showit()
    {
    //获取文本输入
    QString vstr = edit1->text(); //判断是否转换成功
    bool isok;
    //转换
    int value = vstr.toInt(&isok);
    double area = value*value*PI;
    QString tempstr;
    edit2->setText(tempstr.setNum(area));
    }
  • main.cpp
     #include "dialog.h"
    #include <QApplication> int main(int argc, char *argv[])
    {
    QApplication a(argc, argv);
    Dialog w;
    w.show(); return a.exec();
    }

76.QT槽的机制的更多相关文章

  1. qt信号signal和槽slot机制

    内容: 一.概述 二.信号 三.槽 四.信号与槽的关联 五.元对象工具 六.程序样例 七.应注意的问题 信号与槽作为QT的核心机制在QT编程中有着广泛的应用,本文介绍了信号与槽的一些基本概念.元对象工 ...

  2. 第七章 探秘Qt的核心机制-信号与槽

    第七章 探秘Qt的核心机制-信号与槽 注:要想使用Qt的核心机制信号与槽,就必须在类的私有数据区声明Q_OBJECT宏,然后会有moc编译器负责读取这个宏进行代码转化,从而使Qt这个特有的机制得到使用 ...

  3. Qt 内存管理机制(转)

      许转载http://devbean.blog.51cto.com/448512/526734 强类型语言在创建对象时总会显式或隐式地包含对象的类型信息.也就是说,强类型语言在分配对象内存空间时,总 ...

  4. 剖析Qt的事件机制原理

    版权声明 请尊重原创作品.转载请保持文章完整性,并以超链接形式注明原始作者“tingsking18”和主站点地址,方便其他朋友提问和指正. QT源码解析(一) QT创建窗口程序.消息循环和WinMai ...

  5. Qt 内存管理机制

    这篇文章首先发布于我的主页 http://www.devbean.info,以后也会直接发布在那里.现在有 Flex 4 的一篇和 <从 C++ 到 Objective-C>系列,感谢大家 ...

  6. Qt之事件处理机制

    思维导读 一.事件简介 QT程序是事件驱动的, 程序的每个动作都是由内部某个事件所触发.QT事件的发生和处理成为程序运行的主线,存在于程序整个生命周期. 常见的QT事件类型如下: 键盘事件: 按键按下 ...

  7. 回调函数实现类似QT中信号机制(最简单)

    1. 定义回调接口类: class UIcallBack{public: virtual void onAppActivated() = 0; virtual void onShowMore() = ...

  8. 深入Qt 学习 -- 反射机制(比较简单清楚)

    相对于Java天生的这一特性, C++并不具备;但进入到Qt领域,这一切都变得简单自如了. 从Qt的元对象系统可知,除了提供信号/槽机制的特性之外,它还提供了以下特性: ■ QObject::meta ...

  9. 回调函数实现类似QT中信号机制

    1. 定义回调接口类: class UIcallBack { public: virtual void onAppActivated() = 0; virtual void onShowMore()  ...

随机推荐

  1. linux中的挂载是什么意思?通俗点讲

    mount /dev/sda1 /mnt解释:mount 就是挂载命令,/dev/sda1是要挂载的磁盘分区,/mnt是要绑定的目录挂载后就能到目录/mnt去访问磁盘分区/dev/sda1里面的资料了 ...

  2. windows下python3 使用cx_Oracle,xlrd插件进行excel数据清洗录入

    我们在做数据分析,清洗的过程中,很多时候会面对各种各样的数据源,要针对不同的数据源进行清洗,入库的工作.当然python这个语言,我比较喜欢,开发效率高,基本上怎么写都能运行,而且安装配置简单,基本上 ...

  3. ListView优化-ViewHolder缓存

    安卓开发中ListView控件是一个使用频率相当的高级控件,通常用于展示一系列相似度极高的数据,当数据量极大或布局相当复杂时,ListView的性能优化就显得非常重要.所以在开发中不但功能上要满足,而 ...

  4. 因子问题 I - Ugly Numbers

    题目: Ugly numbers are numbers whose only prime factors are 2, 3 or 5 . The sequence 1, 2, 3, 4, 5, 6, ...

  5. js实现观察者模式风格替换

    如下图,我们看到两种风格:在选择男士时,页面颜色为黑色:在选择女士时,页面颜色为粉红色. 主要可以分为两类: 下拉框 ---> 被观察者 div ---> 观察者 面向过程实现风格替换: ...

  6. python3之对本地TXT文件进行增加,删除,修改,查看功能。

    由于是初学,代码如有不足,欢迎指出! 本博客记录我的编程之路,记录所学到的知识,分享所学心得! 这是我的一个作业. 首先分析要求: 创建一个TXT文件用于存储账号与密码 实现对文件进行增加,删除,修改 ...

  7. docker容器存放目录磁盘空间满了,转移数据修改Docker默认存储位置

    原文:docker容器存放目录磁盘空间满了,转移数据修改Docker默认存储位置 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_3767485 ...

  8. 【BZOJ 1051】[HAOI2006]受欢迎的牛

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] Tarjan算法强连通缩点 . 最后出度为0的点. 如果只有一个. 那么这个"大点"所包含的点的个数就是答案了. ...

  9. js实现复选框的操作-------Day41

    不知道之前的一篇为什么一直处于审核阶段.难道有哪个词语是敏感词被河蟹了? 无论了,又一次写了这篇,也算是加深记忆吧. 首先要写的是今天在进行表格数据操作时用到的对复选框checkbox的全选和全不选, ...

  10. Linux下EPoll通信模型简析

    EPoll基于I/O的事件通知机制,由系统通知用户那些SOCKET触发了那些相关I/O事件.事件中包括相应的文件描写叙述符以及事件类型.这样应用程序能够针对事件以及事件的source做相应的处理(Ac ...