qt-02代码创建控件 -- 信号和槽

代码创建控件

dialog.h

#ifndef DIALOG_H
#define DIALOG_H
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>


#include <QDialog>

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = nullptr);
    ~Dialog();
private:
    QLabel *label1,*label2;
    QLineEdit *lineEdit;
    QPushButton* button;
private slots:
    void showArea();
};
#endif // DIALOG_H

dialog.cpp

#include "dialog.h"
#include <QGridLayout>
const static double PI = 3.1416;

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    //布局开始
    label1 =new QLabel(this);
    label1->setText(tr("请输入圆的半径:"));
    lineEdit = new QLineEdit(this);
    label2 = new QLabel(this);
    button = new QPushButton(this);
    button->setText(tr("显示对应圆的面积"));
    QGridLayout *mainLayout = new QGridLayout(this);
    mainLayout->addWidget(label1,0,0);
    mainLayout->addWidget(lineEdit,0,1);
    mainLayout->addWidget(label2,1,0);
    mainLayout->addWidget(button,1,1);
    //布局结束
//信号和槽单个的绑定事件
    connect(button,SIGNAL(clicked()),this,SLOT(showArea()));//绑定button 点击事件
    connect(lineEdit,SIGNAL(textChanged(QString)),this,SLOT(showArea()));//绑定lineEdit改变状态发生的事件
}



Dialog::~Dialog() {}

void Dialog::showArea()
{
    bool ok;
    QString tempStr;
    QString vauleStr = lineEdit->text();
    int valueInt = vauleStr.toInt(&ok);
    double area = valueInt * valueInt * PI;
    label2->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();
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值