前言
优良的跨平台特性:
Qt支持下列操作系统: Microsoft Windows 95/98, Microsoft Windows NT, Linux, Solaris, SunOS, HP-UX, Digital UNIX (OSF/1, Tru64), Irix, FreeBSD, BSD/OS, SCO, AIX, OS390,QNX 等等。
面向对象
Qt 的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。 Qt 提供了一种称为 signals/slots 的安全类型来替代 callback,这使得各个元件之间的协同工作变得十分简单。
丰富的 API
Qt 包括多达 250 个以上的 C++ 类,还提供基于模板的 collections, serialization, file, I/O device, directory management, date/time 类。甚至还包括正则表达式的处理功能。
支持 2D/3D 图形渲染,支持 OpenGL
大量的开发文档
XML 支持。
一、Qt Creator
Qt创建工程
二、源码
1.拷贝到widget.h
代码如下(示例):
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QPushButton>
#include <QLineEdit>
#include <QHBoxLayout>
#include <QVBoxLayout>
#include <QGridLayout>
#include <QLabel>
#include <QString>
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = nullptr);
~Widget();
private:
QPushButton *button,*button1;
QLineEdit *edit1,*edit2,*edit3,*edit4;
QGridLayout *layout;
private slots:
void on_clicked();
void on_clicked1();
public:
void myLayout();
private:
Ui::Widget *ui;
};
#endif // WIDGET_H
2.拷贝到widget.cpp
代码如下(示例):
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
}
Widget::~Widget()
{
delete ui;
}
void Widget::myLayout()
{
button = new QPushButton;
button1 = new QPushButton;
layout = new QGridLayout(this);
edit1 = new QLineEdit;
edit2 = new QLineEdit;
edit3 = new QLineEdit;
edit4 = new QLineEdit;
button1->setText("清除");
button->setText("结果");
connect(button,SIGNAL(clicked(bool)),this,SLOT(on_clicked())); //连接按钮
connect(button1,SIGNAL(clicked(bool)),this,SLOT(on_clicked1()));
layout->addWidget(button,1,0,Qt::Alignment()); //初始化画图
layout->addWidget(edit1,0,0,Qt::Alignment());
layout->addWidget(edit2,0,1,Qt::Alignment());
layout->addWidget(edit3,0,2,Qt::Alignment());
layout->addWidget(edit4,1,1,Qt::Alignment());
layout->addWidget(button1,1,2,Qt::Alignment());
}
void Widget::on_clicked() //计算大小
{
int a = edit1->text().toInt();
int b = edit3->text().toInt();
QString c = edit2->text();
if(c=="+")
{
edit4->setText(QString::number(a+b));
}
if(c=="-")
{
edit4->setText(QString::number(a-b));
}
if(c=="*")
{
edit4->setText(QString::number(a*b));
}
if(c=="/")
{
edit4->setText(QString::number(a/b));
}
}
void Widget::on_clicked1() //清除
{
edit1->clear();
edit2->clear();
edit3->clear();
edit4->clear();
}
拷贝到 main.cpp
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
w.myLayout();
return a.exec();
}