Qt4学习(1)——制作简单的计算器界面

最近开始接触QT,看的是《Qt Creator快速入门》这本书还有网上的的一些视频,Qt使用的4.7.2版本,Qt Creator使用2.1.0版本。 

下面是制作出来的简单计算器界面(界面很简陋,让大家见笑了):

Qt4学习(1)——制作简单的计算器界面_第1张图片

下面是源代码:

//dialog.h
#ifndef DIALOG_H
#define DIALOG_H

#include 
#include 
#include 
#include 
#include 
#include 

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = 0);
    ~Dialog();
private:
    QPushButton *add_btn;//加按钮
    QPushButton *minus_btn;//减按钮
    QPushButton *mult_btn;//乘按钮
    QPushButton *devide_btn;//除按钮
    QLineEdit *line_edit1;//左输入框
    QLineEdit *line_edit2;//右输入框
    QLabel *result_label;//计算结果
    QLabel *left_label;
    QGridLayout *layout;//布局控件
private slots:
    //定义槽
    void add();
    void minus();
    void multiply();
    void devide();

};
#endif // DIALOG_H


//dialog.cpp
#include "dialog.h"

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    QTextCodec::setCodecForTr(QTextCodec::codecForLocale());//设置QObject::tr()所要使用的字符集,否则显示到界面的中文会出现乱码。这里使用指定的字符集,可以自己指定字符集,如QTextCodec::setCodecForTr(QTextCodec::codecForName("gb18030"));
    setWindowTitle(tr("简单计算器"));
    line_edit1 = new QLineEdit(this);//this指定了该控件是dialog的子控件
    line_edit2 = new QLineEdit(this);
    left_label = new QLabel(this);
    left_label->setText(tr("计算结果:"));
    result_label = new QLabel(this);
    add_btn = new QPushButton(this);
    minus_btn = new QPushButton(this);
    mult_btn = new QPushButton(this);
    devide_btn = new QPushButton(this);

    add_btn->setText(tr("加"));
    minus_btn->setText(tr("减"));
    mult_btn->setText(tr("乘"));
    devide_btn->setText(tr("除"));
    //使用QGridLayout进行布局
    layout = new QGridLayout(this);
    layout->addWidget(line_edit1, 0, 0);
    layout->addWidget(line_edit2, 0, 1);
    layout->addWidget(add_btn, 1, 0);
    layout->addWidget(minus_btn, 1, 1);
    layout->addWidget(mult_btn, 2, 0);
    layout->addWidget(devide_btn, 2, 1);
    layout->addWidget(left_label, 3, 0);
    layout->addWidget(result_label, 3, 1);
    //使用connect函数将发送给按钮的信号和相应的槽关联起来
    connect(add_btn, SIGNAL(clicked()), this, SLOT(add()));
    connect(minus_btn, SIGNAL(clicked()), this, SLOT(minus()));
    connect(mult_btn, SIGNAL(clicked()), this, SLOT(multiply()));
    connect(devide_btn, SIGNAL(clicked()), this, SLOT(devide()));
}

Dialog::~Dialog()
{

}

//定义槽
void Dialog::add()
{
    QString s1 = line_edit1 ->text();
    QString s2 = line_edit2 ->text();
    result_label->setText(QString::number(s1.toInt() + s2.toInt()));
}

void Dialog::minus()
{
    QString s1 = line_edit1 ->text();
    QString s2 = line_edit2 ->text();
    result_label->setText(QString::number(s1.toInt() - s2.toInt()));
}
void Dialog::multiply()
{
    QString s1 = line_edit1 ->text();
    QString s2 = line_edit2 ->text();
    result_label->setText(QString::number(s1.toInt() * s2.toInt()));
}
void Dialog::devide()
{
    QString s1 = line_edit1 ->text();
    QString s2 = line_edit2 ->text();
    result_label->setText(QString::number(1.0*s1.toInt() / s2.toInt()));
}

//main.cpp
#include 
#include "dialog.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Dialog w;
    w.show();

    return a.exec();
}

总结:

1.QWidget类是所有用户界面对象的基类,同时它是继承自QObject类和QPaintDevice类。

2.使用了什么控件就要加入相应的头文件,头文件的名和控件的名字是一样的。

3.上面代码在dialog的构造函数里面使用new创建了许多个子控件但是没有在析构函数~dialog()里面进行delete操作,是因为在Qt中,凡是Widget类或者继承自Widget类,在窗口销毁的时候会自动销毁里面包含的子控件,如果在dialog的构造函数里面没有指明创建的控件为子控件的话,那就要在~dialog()里面进行delete操作。

4.使用QGridLayout布局控件可以对各种子控件进行自动布局。

5.Qt中对事件的响应(如点击事件)可以通过connect函数将信号和槽关联起来。

你可能感兴趣的:(Qt4学习)