【问题标题】:Qt and C ++: oblique, Horizontal and Vertical Line [duplicate]Qt 和 C++:斜线、水平线和垂直线
【发布时间】:2021-09-04 12:39:59
【问题描述】:

对于我的项目,我需要一条斜线、水平线和垂直线。

我尝试使用 QLine 类,但此代码不起作用:


QLine * line = new QLine(0, 0, 400, 400) // Oblique line

layout()->addWidget(line) // generate this error: cannot initialize a parameter of type 'QWidget *' with an lvalue of type 'QLine *'

如何制作斜线、水平线和垂直线?

【问题讨论】:

  • QLine 只存储一条线的几何数据。它不是一个小部件类。由于您试图将其添加到布局中,我假设您想直接在某个窗口中绘制它?您可能想查看QPainterQGraphicsScene 之类的类。或者简单地将其创建为图像并将QPixmap 添加到某个标签。

标签: c++ qt


【解决方案1】:

QLine 类,与可视化几何线无关。它只是一条线的表示。这个类也有一些方法可以在一条线上进行数学计算。所以,它不是QWidget*,你不能将它添加到你的布局中。

有几种方法可以在布局中添加斜线,但这里是最简单的:

重新实现QWidget,并覆盖paintEvent。在paintEvent 中,您将创建一个QPainter,然后您可以在 QWidget 中画一条线,例如:

void ObliqueLine::paintEvent(QPaintEvent*) {
    QPainter painter(this);

    int width = size().width();
    int height = size().height();

    painter.setPen(QColor(220,220,220));
    painter.drawLine(0, 0, width, height);
}

查看this link 以了解有关如何创建自定义 QWidget 的更多信息。

【讨论】:

    猜你喜欢
    • 2012-11-19
    • 1970-01-01
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    • 2013-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多