QT的layout(不使用控件拖拽的方法)

QT的layout(不使用控件拖拽的方法)_第1张图片

 widget.h:

#ifndef WIDGET_H
#define WIDGET_H

#include 
#include 
#include 
#include 
#include 
#include 
class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
private:
    QPushButton *btn1;
    QHBoxLayout *layout1;
    QHBoxLayout *layout2;
    QVBoxLayout *layout3;

    QLineEdit *edit1;
    QLineEdit *edit2;
    QLineEdit *edit3;
    QLabel *label1;
private slots:
    void on_clicked();




};
#endif // WIDGET_H

 main.cpp:

#include "widget.h"

#include 

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

 

widget.cpp

#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)//类Widget的成员变量指针初始化放在构造函数中
{
    //QHBoxLayout横向布局  QVBoxLayout
    layout1=new QHBoxLayout;//this指的是本对话框
    layout2=new QHBoxLayout;
    layout3=new QVBoxLayout(this);

    btn1=new QPushButton(this);
    edit1=new QLineEdit;
    edit2=new QLineEdit;
    edit3=new QLineEdit;


    label1=new QLabel;
    layout1->addWidget(btn1);
    layout1->addWidget(edit1);
    layout1->addWidget(edit2);
    layout1->addWidget(edit3);

    layout2->addWidget(label1);
    layout3->addLayout(layout1);
    layout3->addLayout(layout2);

    btn1->setText("确定");

    //connect的第一个参数为与槽函数关联的控件名,第二个参数响应一个事件,第三个代表在那个对话框发生,第四个代表button点击后调用哪个函数
    //当点击了btn1的时候就调用on_clicked()这个函数。
    connect(btn1,SIGNAL(clicked()),this,SLOT(on_clicked()));//实现控件与具体槽函数的关联
}

Widget::~Widget()
{
}

void Widget::on_clicked()
{
    int a=edit1->text().toInt();
    int b=edit3->text().toInt();
    if(edit2->text()=="+")
        label1->setText(QString::number(a+b));
    if(edit2->text()=="-")
        label1->setText(QString::number(a-b));
    if(edit2->text()=="*")
        label1->setText(QString::number(a*b));
    if(edit2->text()=="/"&&b!=0)
        label1->setText(QString::number(a/b));
}

QT的layout(不使用控件拖拽的方法)_第2张图片

你可能感兴趣的:(QT)