简明易懂的Linux下Qt编程入门指南 (linux下qt编程入门教程)
作为一名初学者,初学Qt编程必须得有一个指南,该指南应该够简明易懂并让学习者通过易懂的指导了解Qt编程。对于那些对Linux开发有着浓厚兴趣的年轻开发者,Qt是一种可以帮助你在Linux系统上构建出类似于Windows样式的程序的编程语言。本篇文章旨在介绍如何利用Linux系统下的Qt进行程序开发。
Qt概述
Qt是一种跨平台开发框架,它可以让开发者们轻松地开发各种程序界面。它是一个C++编写的库,使用方式与MFC十分相似。Qt 并不是只能在Linux系统中使用,它也能在多种系统平台如Windows、OS X、iOS、Android等等都能被使用。
在Linux系统下,Qt的开发环境有很多种选择,它们都可以帮助开发者快速的构建出自己想要的程序。我们这里推荐使用ubuntu,它是一种十分用户友好的Linux系统,而且它也有一个简单易用的Qt安装包可以直接用来进行开发。
安装Qt
从Qt官网下载安装包(https://download.qt.io/official_releases/qt/5.13/5.13.0/qt-opensource-linux-x64-5.13.0.run)并且在Ubuntu系统中进行安装,这个过程十分的简单。只需要运行下载文件并进行跟随默认的安装步骤即可完成。如果你安装过程中遇到了问题,可以去Qt官网找到相应的文档来解决,或者在开发者社区中求助。
编写之一个qt程序
我们将用一个简单的plotting程序来作为之一个qt程序的demo。这个程序可以让我们根据一些简单的数学函数在图形界面中显示函数的图像。新建一个文件夹作为你的工程位置,然后创建一个新的Qt Console Proejct:
1. 启动Qt Creator,选择“New Project”;
2. 在左侧的对话框中,选择 “Application”->”Qt Console Application”;
3. 输入项目名称eg.helloqt,点击Next,输入最小Qt版本号为5.0,点击中介库(所需要的库文件,也可以手动配置),点击Next,跳过类的选项;
4. 点击”Configure Project”,并勾选上”C++11″;
5. 由MnWindow.cpp 和 MnWindow.h 组成主要的C++代码文件,另外有一个helloqt.pro文件控制Qt项目的构建。
在这里我们定义一个Plot类用来绘制图形。在新项目的mnwindow.h文件中,输入以下代码:
“`
#include
#include
#include
class Plot : public QWidget {
public:
explicit Plot(QWidget* parent = nullptr);
protected:
void pntEvent(QPntEvent* event) override;
};
“`
我们需要继承自QWidget,这样我们就能够使用QWidget的方法直接在widget上绘制图形。PntEvent是在widget上绘制的一个回调函数。注意,重载和重写pntEvent()函数是QWidget创建图形用户界面系统的一种最基本和常见的方法。
接下来,在mnwindow.cpp文件中,实现这个函数。我们将画这个图:
y = x³ + x² + x (x从-1到1)
“`
#include “mnwindow.h”
#include
#include
Plot::Plot(QWidget* parent)
:QWidget(parent){}
void Plot::pntEvent(QPntEvent* /* event */) {
QPnter pnter(this);
pnter.setPen(QPen(Qt::blue,2));
pnter.setBrush(Qt::NoBrush);
double x,y,xPrev,yPrev;
const int width = this->width();
const int height = this->height();
const double xScale = width/2.0;
const double yScale = height/2.0;
pnter.translate(width/2,height/2);//把中心点调整到窗口正中央
xPrev = -1.0;
yPrev = xPrev*xPrev*xPrev+xPrev*xPrev+xPrev;
for(x=-1.0;x
{
y=x*x*x+x*x+x;
pnter.drawLine(QPointF(xPrev*xScale,-yPrev*yScale),
QPointF(x*xScale,-y*yScale));
xPrev = x;
yPrev = y;
}
}
“`
这段代码很简单,它首先用蓝色的笔设置了绘制颜色,然后计算每个绘图点的x,y值。之后,绘制一些线来连接图像上的点,从而画出曲线。
修改mnwindow.cpp的mn函数,将我们实现的Plot类加入widget中,使之显示在屏幕上。把代码改成下面这样:
“`
#include “mnwindow.h”
#include “ui_mnwindow.h”
#include
#include
MnWindow::MnWindow(QWidget *parent) :
QMnWindow(parent)
{
auto widget = new QWidget;
auto layout = new QVBoxLayout;
auto plot = new Plot;
layout->addWidget(plot);
widget->setLayout(layout);
setCentralWidget(widget);
}
MnWindow::~MnWindow()
{
}
“`
运行程序,我们可以看到一个非常简单但却能正常绘制出一条图像的程序。