[Qt] QGraphicsView浮动工具栏代码记录

void view::initAction() {
    /**
     * @brief 工具栏
     */
    auto bar = new QToolBar(this);
    bar->setStyleSheet("background-color:lightGray;");

    /**
     * @brief Action分组
     */
    auto group = new QActionGroup(this);

    /**
     * @brief 选择模式
     */
    auto selection = new QAction(bar);
    selection->setIcon(QIcon(":/mouse.png"));
    selection->setText(tr("Selection"));
    selection->setShortcut(QKeySequence::Cancel);
    selection->setCheckable(true);
    selection->setChecked(true);
    connect(selection, &QAction::triggered, this, &view::draw_none);
    bar->addAction(selection);
    group->addAction(selection);

    /**
     * @brief 绘制矩形
     */
    auto drawRect = new QAction(bar);
    drawRect->setIcon(QIcon(":/rect.png"));
    drawRect->setText(tr("Add Rect"));
    drawRect->setCheckable(true);
    connect(drawRect, &QAction::triggered, this, &view::draw_rect);
    bar->addAction(drawRect);
    group->addAction(drawRect);

    /**
     * @brief 绘制椭圆
     */
    auto drawEllipse = new QAction(bar);
    drawEllipse->setIcon(QIcon(":/ellipse.png"));
    drawEllipse->setText(tr("Add Ellipse"));
    drawEllipse->setCheckable(true);
    connect(drawEllipse, &QAction::triggered, this, &view::draw_ellipse);
    bar->addAction(drawEllipse);
    group->addAction(drawEllipse);

    /**
     * @brief 绘制文本
     */
    auto drawText = new QAction(bar);
    drawText->setIcon(QIcon(":/text.png"));
    drawText->setText(tr("Add Text"));
    drawText->setCheckable(true);
    connect(drawText, &QAction::triggered, this, &view::draw_text);
    bar->addAction(drawText);
    group->addAction(drawText);

    /**
     * @brief 绘制节点
     */
    auto drawJunction = new QAction(bar);
    drawJunction->setIcon(QIcon(":/point.png"));
    drawJunction->setText(tr("Add Junction"));
    drawJunction->setCheckable(true);
    connect(drawJunction, &QAction::triggered, this, &view::draw_junction);
    bar->addAction(drawJunction);
    group->addAction(drawJunction);

    /**
     * @brief 绘制直线
     */
    auto drawLine = new QAction(bar);
    drawLine->setIcon(QIcon(":/line.png"));
    drawLine->setText(tr("Add Line"));
    drawLine->setCheckable(true);
    connect(drawLine, &QAction::triggered, this, &view::draw_line);
    bar->addAction(drawLine);
    group->addAction(drawLine);

    /**
     * @brief 绘制连接线
     */
    auto drawConnectLine = new QAction(bar);
    drawConnectLine->setIcon(QIcon(":/cline.png"));
    drawConnectLine->setText(tr("Add Connect Line"));
    drawConnectLine->setCheckable(true);
    connect(drawConnectLine, &QAction::triggered, this, &view::draw_connect_line);
    bar->addAction(drawConnectLine);
    group->addAction(drawConnectLine);

    /**
     * @brief 绘制母线
     */
    auto drawMainLine = new QAction(bar);
    drawMainLine->setIcon(QIcon(":/line.png"));
    drawMainLine->setText(tr("Add Main Line"));
    drawMainLine->setCheckable(true);
    connect(drawMainLine, &QAction::triggered, this, &view::draw_main_line);
    bar->addAction(drawMainLine);
    group->addAction(drawMainLine);

    /**
     * @brief 导入图片
     */
    auto importImage = new QAction(bar);
    importImage->setIcon(QIcon(":/image.png"));
    importImage->setText(tr("Import Image"));
    connect(importImage, &QAction::triggered, this, &view::import_image);
    bar->addAction(importImage);

    /**
     * @brief 水平布局
     */
    QHBoxLayout* layout = new QHBoxLayout(this);
    layout->addWidget(bar, 0, Qt::AlignTop | Qt::AlignHCenter);
    setLayout(layout);
}
### 回答1: 关于Qt QGraphicsView绘制折线的问题,以下是解答: Qt QGraphicsView是一个高级的2D图形控件,是基于MVC架构设计的。QGraphicsView可以用来展示绘制出来的图形,包括图像、文本、图表等等。 要在Qt QGraphicsView中绘制折线,可以使用QGraphicsScene和QGraphicsLineItem等相关类。具体操作可以分为几个步骤: 1.创建QGraphicsScene对象,用来存放绘制的图元。 2.根据需要创建QGraphicsLineItem对象,用来绘制折线。 3.将QGraphicsLineItem对象添加到QGraphicsScene中。 4.创建QGraphicsView对象,将QGraphicsScene设置为其场景。 5.将QGraphicsView对象添加到需要展示的窗口中。 以上就是在Qt QGraphicsView中绘制折线的基本步骤,具体实现可以参考Qt官方文档和示例代码。 ### 回答2: Qt是一个高效、跨平台的C++图形界面开发框架,支持多种绘图和绘制工具,其中包括了QT QGraphicsView。在QT QGraphicsView中,绘制折线可以通过以下步骤实现: 1.创建一个QGraphicsScene对象,该对象将显示在QGraphicsView中 2.在QGraphicsScene中添加一个折线 3.使用QGraphicsView来显示QGraphicsScene中的折线 下面我们将详细说明如何通过步骤来实现。 1.创建QGraphicsScene 在Qt中创建QGraphicsScene对象可使用以下代码: ``` QGraphicsScene *scene = new QGraphicsScene(this); ``` 这个代码创建了一个新的QGraphicsScene对象,应用程序中视图的大小将用于Scene的大小,this指针表示这个画布和QTUI相关。 2.添加折线 接下来,我们将在上一步中创建的画布中添加一条折线。 创建一个QGraphicsLineItem对象 ``` QGraphicsLineItem *line = new QGraphicsLineItem(x1, y1, x2, y2); ``` x1和y1是折线的起点,x2和y2是折线的终点。 将创建的QGraphicsLineItem对象添加到QGraphicsScene中 ``` scene->addItem(line); ``` 3.创建QGraphicsView 创建QGraphicsView对象是将折线显示在屏幕上。以下代码创建了QGraphicsView对象: ``` QGraphicsView *view = new QGraphicsView(scene); ``` scene是指先前创建的QGraphicsScene对象。 完整示例代码: ``` //创建QGraphicsScene对象 QGraphicsScene *scene = new QGraphicsScene(this); //创建折线 QGraphicsLineItem *line = new QGraphicsLineItem(x1, y1, x2, y2); //将折线添加到QGraphicsScene scene->addItem(line); //创建QGraphicsView QGraphicsView *view = new QGraphicsView(scene); //将QGraphicsView视图添加到QtUI界面中 ui->widget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); ui->widget->setScene(scene); ``` 通过上面的步骤,可以轻松在Qt中绘制折线,为了更好的用户交互体验,可以增加一些代码来设置折线颜色、线宽度等等。到这里绘制折线已经完成了,现在用户可以在QGraphicsView中与折线进行交互,并进行一些操作,例如缩放、拖拽等等。 ### 回答3: Qt QGraphicsView 是一个强大的图形视图框架,提供了绘制各种图形的方法,包括绘制折线。下面我将介绍如何使用 QGraphicsView 进行折线绘制。 首先,我们需要创建一个 QGraphicsView 对象和一个 QGraphicsScene 对象,并将 QGraphicsScene 对象设置为 QGraphicsView 的场景。接下来,我们需要创建一个 QGraphicsLineItem 对象来表示折线。代码如下: ```cpp QGraphicsView *view = new QGraphicsView(this); QGraphicsScene *scene = new QGraphicsScene(this); view->setScene(scene); QGraphicsLineItem *lineItem = new QGraphicsLineItem(); ``` 然后,我们需要设置线条的起始点和结束点,以及线条的样式。这可以通过 QGraphicsLineItem 的 setLine() 方法来实现。我们还可以通过 QGraphicsLineItem 的 setPen() 方法设置线条的颜色和宽度。示例代码如下: ```cpp lineItem->setLine(0, 0, 100, 100); // 设置起始点和结束点 QPen pen(Qt::red); // 创建颜色为红色的笔 pen.setWidth(2); // 设置线条宽度为 2 lineItem->setPen(pen); // 设置线条样式 ``` 最后,我们需要将 QGraphicsLineItem 对象添加到 QGraphicsScene 中,以便它能够在 QGraphicsView 中进行显示。示例代码如下: ```cpp scene->addItem(lineItem); ``` 综上所述,以上代码展示了如何使用 QGraphicsView 绘制折线。当然,还有很多其他的绘制方法和属性可以应用于 QGraphicsView 和 QGraphicsLineItem 对象,根据实际需求进行选择和处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值