使用Qt做一个简单绘图项目并生成可执行文件(.exe)

要求:

  1. 在界面上绘制两条垂直交叉直线,一条连接窗口上下边框的中点,一条连接窗口左右边框的中点,当窗口缩放时,直线相对位置不变。
  2. 将窗口背景绘制为蓝色。

代码如下:
mainwindow.h:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

    //绘图事件
    void paintEvent(QPaintEvent *);

private:
    Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QPainter>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QColor color = QColor(0,150,255);
    QPalette p = this->palette();
    p.setColor(QPalette::Window,color);
    this->setPalette(p);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::paintEvent(QPaintEvent *)
{
    //实例化画家对象,  this指定绘图的设备
    QPainter painter(this);

    //画线
    QPen pen(QColor(0,0,0));
    pen.setWidth(3);
    painter.setPen(pen);
    //设置抗锯齿能力

    painter.setRenderHint(QPainter::Antialiasing);

    painter.drawLine(QPoint(0,height()/2),QPoint(width(),height()/2));

    painter.drawLine(QPoint(width()/2,0),QPoint(width()/2,height()));


}

main.cpp

#include "mainwindow.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;

    w.setWindowTitle("任务1");


    w.show();
    return a.exec();
}

注意点:
1、当设置背景颜色的时候,有多种方法,在这个项目里,我选择了在构造函数中直接设置背景颜色

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QColor color = QColor(0,150,255);
    QPalette p = this->palette();
    p.setColor(QPalette::Window,color);
    this->setPalette(p);
}

实际上还有一种方法

this->setStyleSheet ("background-color: rgb(0, 150, 255);");

但是这一方法,会导致画的两条线看不见…有没有大佬能告诉我为什么

2、画线:

void MainWindow::paintEvent(QPaintEvent *)
{
    //实例化画家对象,  this指定绘图的设备
    QPainter painter(this);

    //画线
    QPen pen(QColor(0,0,0));
    pen.setWidth(3);
    painter.setPen(pen);
    //设置抗锯齿能力

    painter.setRenderHint(QPainter::Antialiasing);

    painter.drawLine(QPoint(0,height()/2),QPoint(width(),height()/2));

    painter.drawLine(QPoint(width()/2,0),QPoint(width()/2,height()));


}

height()获取的是窗口的高
width()获取的是窗口的宽

这样下来,当窗口缩放时,直线相对位置不变。

QPen pen(QColor(0,0,0));
    pen.setWidth(3);
    painter.setPen(pen);

这个是设置了笔的性质,为了更加美观

3、生成可执行文件
在这里插入图片描述
选择release,然后一定要进行编译!!!

在这里插入图片描述
在这里找到生成的exe文件

在这里插入图片描述

将其复制,并且新建一个文件夹,将此.exe文件粘贴到里面
打开QT控制台
在这里插入图片描述

cd /d 路径(指的是需要打包的exe程序目录,就是刚才拷贝出来的exe程序所在的目录),回车后:
输入如下命令行:windeployqt 程序名 敲击回车。这一步操作是将所需的库文件全都拷贝到exe程序的当前文件:
在这里插入图片描述
如上图所示

点击,运行
在这里插入图片描述
颜色比较深,在构造函数那边也可以继续调颜色

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值