目录
1. 创建一个新项目
1.1 创建类的基类
1.2 main.cpp代码释义
2. 代码写在哪?
2.1 怎么找到我们需要的函数?
3. 实战:输入半径显示圆的面积
点击创建项目,开始创建:
注意:保存项目的路径中不能有中文!项目工程名称一般不要有特殊符号或者中文!
单击完成,系统就自动打开了main.cpp文件,如下图所示:
可以看到左边菜单栏中有4个文件,其中 main.cpp 是主函数。dialog.cpp 是类的函数,一般情况下,窗口的属性和添加控件的操作都会在类的构造函数中去写,优点是可以让主程序中无多余代码,程序阅读也方便。而 dialog.h 是类和头文件,dialog.ui 是界面设计代码。
比如我现在想要修改一下窗口的标题,然后将窗口设置为固定大小并且不可以拉伸。那么问题来了,假设我不知道这个修改窗口标题的函数是什么该怎么办呢?
我们可以单击左侧的帮助按钮,然后将查询方式改为索引,接着我们开始在搜索框中搜索我们想要函数。那搜什么呢?既然我们想设置的是窗口的标题,那么肯定是和窗口有关。那么我们先试着输入单词window,然后我们发现下面有一个函数 setWindowTitle() 。
除了在帮助中查找,我们还可以在电脑的开始菜单栏中找到Qt文件夹下的 Assistant (助手)。
打开Qt助手,我们还是切到索引,然后输入单词 window,如下图:
注意:如果函数在类中未找到,可去其基类中查找。
后退、向前可以点击左上角的2个黄色箭头。
接着我们开始写代码:
#include "dialog.h"
#include "./ui_dialog.h"
Dialog::Dialog(QWidget *parent)
: QDialog(parent)
, ui(new Ui::Dialog)
{
ui->setupUi(this);
// 修改窗口标题
this->setWindowTitle("我的第一个窗口");
// 修改窗口的大小
this->resize(500, 300);
// 设置窗口不可拉伸
this->setFixedSize(600, 600);
}
Dialog::~Dialog()
{
delete ui;
}
看下运行效果:
上面我们顺便讲到了修改窗口的属性,代码是写在了dialog.cpp 中的,那在实际开发中我们的其它代码写在哪里呢?
如上图所示,我们想做一个简单的、计算圆面积的小程序。想要实现的效果是:当我们在1处输入半径数据,然后点击3处的开始计算按钮之后,2处的空白标签控件会显示出计算结果。
这里就涉及到了信号和槽的概念了,但是这里我们不展开去讲,先把这个小程序的功能实现了再说。
具体怎么操作呢?代码怎么写?又该写在哪里呢?
首先,我们双击dialog.ui 文件,进入ui设计界面。第1步,单击按钮控件。第2步,右击弹出菜单选择转到槽 ,然后选择clicked() 。第3步确定。
点击确定后,系统就会自动打开了dialog.cpp 文件中,那接下来的实现代码是不是就是在这里写呢?没错,但是咱们先不急着写,先打开dialog.h 也就是头文件。我们发现文件中的内容多了2行代码:
private slots:
void on_pushButton_clicked();
通过ui界面直接添加信号槽的好处就体现在这里了,我们不需要自己去添加代码,系统已经自动帮我们添加好了。但是这里不要动,我们的具体代码还是要回到dialog.cpp 中去写。
void Demo_1::on_pushButton_clicked()
{
int value=ui->lineEdit->text().toDouble();
double area=value*value*3.14;
QString temp;
ui->label_3->setText(temp.setNum(area));
}
中间的4行代码就是实现计算圆面积的全部代码了,是不是很简单呢?下面我们运行测试一下:
当我们输入2,然后点击开始计算按钮,label_3就立即显示出了计算结果12.56。然后我们再输入0.5试一下:
咦?结果怎么会是0!?
原来是声明变量的时候写成了int 类型。。。。大家可千万不要像我一样粗心大意、学了前面忘了后面哈~
最终修改后的代码如下:
void Demo_1::on_pushButton_clicked()
{
double value=ui->lineEdit->text().toDouble();
double area=value*value*3.14;
QString temp;
ui->label_3->setText(temp.setNum(area));
}
dialog.cpp 中完整代码如下:
#include "dialog.h"
#include "./ui_dialog.h"
Dialog::dialog(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::Dialog)
{
ui->setupUi(this);
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::on_pushButton_clicked()
{
double value=ui->lineEdit->text().toDouble();
double area=value*value*3.14;
QString temp;
ui->label_3->setText(temp.setNum(area));
}
最后,因为我也才刚接触Qt,难免会存在一些错误的地方,欢迎大家在评论区批评指正。也恳请路过的大佬们帮我点个赞,虽然只是顺手的一个赞,但也能让我开心好几天。拜托啦~
ღ( ´・ᴗ・` )比