介绍:不使用ui画图功能,使用纯代码入门,编写计算圆面积
#ifndef DIALOG_H
#define DIALOG_H
#include <QDialog>
/*加入实现Label、LineEdit、PushButton控件的头文件*/
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
const double PI = 3.1615;
class Dialog : public QDialog
{
/*Q_OBJECT宏的作用是启动QT5对象系统的一些特性(如支持信号与槽)
它必须放置到类的私有区*/
Q_OBJECT
public:
Dialog(QWidget *parent = nullptr);
~Dialog();
public slots:
void area();
private:
//界面中的控件定义
QLabel *label1,*label2;
QLineEdit *lineEdit;
QPushButton *button;
};
#endif // DIALOG_H
#include "dialog.h"
#include <QGridLayout> //布局管理器的头文件
Dialog::Dialog(QWidget *parent)
: QDialog(parent)
{
label1 = new QLabel(this);
label1->setText(u8"请输入圆的半径");
lineEdit = new QLineEdit(this);
label2 = new QLabel(this);
button = new QPushButton(this);
button->setText(u8"显示对应圆的面积");
//布局管理器,将所有控件的位置固定
QGridLayout *mainlayout = new QGridLayout(this);
mainlayout->addWidget(label1,0,0);
mainlayout->addWidget(lineEdit,0,1);
mainlayout->addWidget(label2,1,1);
mainlayout->addWidget(button,1,1);
connect(button,SIGNAL(clicked()),this,SLOT(area()));
}
Dialog::~Dialog()
{
}
void Dialog::area()
{
bool ok;
QString radius;
radius = lineEdit->text();
int radius_input =radius.toInt(&ok);
double area_value = radius_input * radius_input * PI;
QString area_output;
lineEdit->setText(area_output.setNum(area_value));
}
总结:
1.中文乱码问题,tr("测试")还是会乱码,用u8"测试"
2.从控件中读取内容 指针LineEdit->text(); LineEdit.text();
向控件中输入内容 LineEdit->setText(num);
输入内容double->string
LineEdit->setText(QString b.setNum(num));
3.对于输入内容的限制
//例,限制输入为整型
bool ok;
int radius_input =radius.toInt(&ok);