如何将Qt的画笔功能扩展为支持长尾词输入的智能问答界面?

2026-04-12 11:253阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计450个文字,预计阅读时间需要2分钟。

如何将Qt的画笔功能扩展为支持长尾词输入的智能问答界面?

使用Qt实现窗口上画线功能,类似画笔功能。

cpp#include #include #include #include

class LineWidget : public QWidget { Q_OBJECT

public: LineWidget(QWidget *parent=nullptr) : QWidget(parent) { setAttribute(Qt::WA_AcceptTouchEvents); setAttribute(Qt::WA_NoSystemBackground); setAttribute(Qt::WA_OpaquePaintEvent); }

protected: void paintEvent(QPaintEvent *event) override { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); painter.drawLine(startPoint, endPoint); }

如何将Qt的画笔功能扩展为支持长尾词输入的智能问答界面?

void mousePressEvent(QMouseEvent *event) override { if (event->button()==Qt::LeftButton) { startPoint=event->pos(); update(); } }

void mouseMoveEvent(QMouseEvent *event) override { if (event->buttons() & Qt::LeftButton) { endPoint=event->pos(); update(); } }

private: QPoint startPoint; QPoint endPoint;};

#include main.moc

int main(int argc, char *argv[]) { QApplication app(argc, argv); LineWidget lineWidget; lineWidget.show(); return app.exec();}

用Qt实现在窗口上画线,类似于画笔功能。

头文件

#ifndef MyPaint_h__ #define MyPaint_h__ #include <QtWidgets/QWidget> class MyPaint :public QWidget {     Q_OBJECT public:     MyPaint(QWidget *parent = nullptr);     void mousePressEvent(QMouseEvent *event);     void mouseMoveEvent(QMouseEvent *event);     void mouseReleaseEvent(QMouseEvent *event);     void paintEvent(QPaintEvent *event); private:     std::vector<std::vector<QPoint>> _lines; }; #endif // MyPaint_h__

实现

#include "MyPaint.h" #include <QPainter> #include <QMouseEvent> MyPaint::MyPaint(QWidget *parent):QWidget(parent) { } void MyPaint::mousePressEvent(QMouseEvent *event) //鼠标按下的时候新增加一条线,并记录起点 {     std::vector<QPoint> line;       line.push_back(event->pos());     _lines.push_back(line); } void MyPaint::mouseMoveEvent(QMouseEvent *event)//鼠标移动的时候新增加点 {     auto &line = _lines[_lines.size() - 1];     line.push_back(event->pos());     update(); //更新,重新绘制窗口,自动调用paintEvent } void MyPaint::mouseReleaseEvent(QMouseEvent *event) {     auto &line = _lines[_lines.size() - 1];     line.push_back(event->pos()); } void MyPaint::paintEvent(QPaintEvent *event) //绘制所有的线 {     //QPainter painter(this);     //painter.setPen(QPen(Qt::red, 3, Qt::DashLine));     //painter.setBrush(Qt::blue);     //painter.drawRect(QRect(10, 10, 100, 30));     //painter.drawEllipse(130, 10, 50, 50);     //painter.drawLine(QLine(200, 10, 300, 20));     //painter.drawText(QPoint(10, 70), "hello" );     QPainter painter(this);     painter.setPen(QPen(Qt::green, 3));     for (const auto &line : _lines)     {         for (int i=0;i<line.size()-1;i++)         {             painter.drawLine(line.at(i), line.at(i + 1));         }     } }

效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。

本文共计450个文字,预计阅读时间需要2分钟。

如何将Qt的画笔功能扩展为支持长尾词输入的智能问答界面?

使用Qt实现窗口上画线功能,类似画笔功能。

cpp#include #include #include #include

class LineWidget : public QWidget { Q_OBJECT

public: LineWidget(QWidget *parent=nullptr) : QWidget(parent) { setAttribute(Qt::WA_AcceptTouchEvents); setAttribute(Qt::WA_NoSystemBackground); setAttribute(Qt::WA_OpaquePaintEvent); }

protected: void paintEvent(QPaintEvent *event) override { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); painter.drawLine(startPoint, endPoint); }

如何将Qt的画笔功能扩展为支持长尾词输入的智能问答界面?

void mousePressEvent(QMouseEvent *event) override { if (event->button()==Qt::LeftButton) { startPoint=event->pos(); update(); } }

void mouseMoveEvent(QMouseEvent *event) override { if (event->buttons() & Qt::LeftButton) { endPoint=event->pos(); update(); } }

private: QPoint startPoint; QPoint endPoint;};

#include main.moc

int main(int argc, char *argv[]) { QApplication app(argc, argv); LineWidget lineWidget; lineWidget.show(); return app.exec();}

用Qt实现在窗口上画线,类似于画笔功能。

头文件

#ifndef MyPaint_h__ #define MyPaint_h__ #include <QtWidgets/QWidget> class MyPaint :public QWidget {     Q_OBJECT public:     MyPaint(QWidget *parent = nullptr);     void mousePressEvent(QMouseEvent *event);     void mouseMoveEvent(QMouseEvent *event);     void mouseReleaseEvent(QMouseEvent *event);     void paintEvent(QPaintEvent *event); private:     std::vector<std::vector<QPoint>> _lines; }; #endif // MyPaint_h__

实现

#include "MyPaint.h" #include <QPainter> #include <QMouseEvent> MyPaint::MyPaint(QWidget *parent):QWidget(parent) { } void MyPaint::mousePressEvent(QMouseEvent *event) //鼠标按下的时候新增加一条线,并记录起点 {     std::vector<QPoint> line;       line.push_back(event->pos());     _lines.push_back(line); } void MyPaint::mouseMoveEvent(QMouseEvent *event)//鼠标移动的时候新增加点 {     auto &line = _lines[_lines.size() - 1];     line.push_back(event->pos());     update(); //更新,重新绘制窗口,自动调用paintEvent } void MyPaint::mouseReleaseEvent(QMouseEvent *event) {     auto &line = _lines[_lines.size() - 1];     line.push_back(event->pos()); } void MyPaint::paintEvent(QPaintEvent *event) //绘制所有的线 {     //QPainter painter(this);     //painter.setPen(QPen(Qt::red, 3, Qt::DashLine));     //painter.setBrush(Qt::blue);     //painter.drawRect(QRect(10, 10, 100, 30));     //painter.drawEllipse(130, 10, 50, 50);     //painter.drawLine(QLine(200, 10, 300, 20));     //painter.drawText(QPoint(10, 70), "hello" );     QPainter painter(this);     painter.setPen(QPen(Qt::green, 3));     for (const auto &line : _lines)     {         for (int i=0;i<line.size()-1;i++)         {             painter.drawLine(line.at(i), line.at(i + 1));         }     } }

效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持自由互联。