QT学习(1)
QT5简单开发实例(计算圆面积)
1、通过设计器 QT Designer实现
新建文件或项目,创建一个新项目,先择Application → Qt Widgets Application,点击choose,创建一个桌面应用程序。选择保存项目的路径并自定义名字(路径不能出现中文)
根据实际需要,选择一个基类,这里选择QDialog对话框类作为基类,这时,类名、头文件、源文件、界面文件都出现默认的文件名,这些文件名可以根据需要进行相应修改(我这里修改为QtLearn1)。默认选中创建界面复选框,表示需要采用界面设计器来设计界面,否则利用代码完成界面的设计。
点击完成,创建项目
文件列表中的文件自动分类显示
双击ui文件,进行界面设计,内容如下所示。
QT中main()函数相关内容
#include "qtlearn1.h" //包含了程序中要完成功能的Qtlearn1类的定义,在该类中封装要完成的功能,使用哪个类就必须将该类的头文件引用过来。
#include <QApplication>
//Application类的定义,在每个使用Qt图形化应用程序中都必须使用一个QApplication对象。
//QApplication管理了各种各样的图形化应用程序的广泛资源、基本设置、控制流及事件处理等。
int main(int argc, char *argv[]) // 程序入口,argc是命令行变量的数量,argv是命令行变量的数组
{
QApplication a(argc, argv); // a是这个程序的QApplication对象。在任何Qt窗口系统部件被使用之前必须创建QApplication对象。
QtLearn1 w;
w.show(); //使窗口可见
return a.exec(); //程序进入消息循环,等待可能的输入进行响应。
}
编写代码
在ui文件的计算按钮上点击鼠标右键,在弹出的下拉菜单中选择“转到槽…”,然后选择QAbstractButton的“clicked()”信号。
进入cpp文件中的按钮单击事件槽函数on_countBtn_clicked(),添加如下代码。
void Dialog::on_countBtn_clicked()
{
bool ok;
QString tempStr;
QString valueStr = ui->radiusLineEdit->text();
int valueInt = valueStr.toInt(&ok);
double area = valueInt*valueInt*PI;//在文件开始处添加const static double PI = 3.1416
ui->area_Label_2->setText(tempStr.setNum(area));
}
运行程序,在Line Edit 文本框中输入半径值,单击计算按钮后,完成圆面积的计算。
2、通过代码实现
首先重新创建项目,但是取消勾选创建界面。
在头文件中,添加如下代码:
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
...
...
private:
QLabel *label1, *label2; //label1标签提示“输入半径”,label2标签显示圆面积计算结果
QLineEdit *lineEdit; //文本框用于输入半径
QPushButton *button;// 计算命令按钮
在cpp文件中,添加如下代码
#include <QGridLayout> //布局管理器头文件
QtLearn1::QtLearn1(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);
}
运行,显示如下
之后在头文件中添加如下代码
private slots:
void showArea();
在cpp文件的构造函数中添加如下代码
connect(button,SIGNAL(clicked()),this,SLOT(showArea()));
在cpp的showArea函数中计算圆面积。
void QtLearn1::showArea()
{
bool ok;
QString tempStr;
QString valueStr = lineEdit->text();
int valueInt = valueStr.toInt(&ok);
double area = valueInt*valueInt*PI;
label2->setText(tempStr.setNum(area));
}
运行程序,结果如下