- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 drawingWidget.h中有QVector<QPoint>
m_vertices和QVector<QLine>
。h
我目前正在尝试做一个简单的绘图工具,可以在其中添加顶点和线。我设法在我的“MainWindow
”上绘制了多个顶点,但是我不太明白,如何在创建的顶点之间实现一条线。
基本上,我创建了两个点,通过在第一个顶点上单击鼠标左键并在第二个顶点上单击鼠标左键...应该在它们之间创建一条线。
我怎样才能做到这一点?
void DrawingWidget::paintEvent(QPaintEvent *event) {
QPainter painter(this);
painter.fillRect(event->rect(), Qt::blue);
painter.setBrush(Qt::black);
for(int i = 0; i < m_vertices.size() ; i++) {
painter.drawEllipse(m_vertices[i], 20, 20);
}
}
void DrawingWidget::mousePressEvent(QMouseEvent *event) {
if(m_state == ADD_VERTEX_SELECTED) {
if(event->button() == Qt::LeftButton) {
//m_x = event->x();
//m_y = event->y();
//update();
QPoint point = event->pos();
m_vertices.append(point);
update();
}
}
if(m_state == ADD_LINE_SELECTED) {
if(event->button() == Qt::LeftButton) {
QPoint Startpoint = event->x();
QPoint Endpoint = event->y();
}
}
}
最佳答案
你快到了。您需要为此使用 QPainter::drawLine
,并从QPoint
传递两个连续的鼠标m_vertices
。
例如
void DrawingWidget::paintEvent(QPaintEvent *event)
{
QPainter painter(this);
painter.fillRect(event->rect(), Qt::blue);
painter.setPen(QPen(Qt::black, 3)); // width of the line
if(m_vertices.size() == 1) // for the first mouse click
painter.drawEllipse(m_vertices[0], 4, 4);
for(int i = 0; i < m_vertices.size()-1 ; i++)
{
const QPoint& point1 = m_vertices[i];
const QPoint& point2 = m_vertices[i+1];
// draw the mouse point
painter.drawEllipse(point1, 4, 4);
painter.drawEllipse(point2, 4, 4);
// draw the line
painter.drawLine(point1, point2);
}
}
关于c++ - Qt C++ QLine QPoint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61462006/
我的 drawingWidget.h中有QVector m_vertices和QVector。h 我目前正在尝试做一个简单的绘图工具,可以在其中添加顶点和线。我设法在我的“MainWindow”上绘制
我正在尝试开发一款 Tic Tac Toe 游戏,我将在其中的 QMainWindow 中央小部件中放置一个 QGridLayout。在那里,我打算添加其他小部件(棋盘单元)和分隔游戏单元的线。 这可
我创建了一个 Qwidget,Form_temp,它根据在父窗口小部件 MainWindow 中创建的数据数组绘制线条。我面临的问题是我通过插槽 send_data 从 MainWindow 发送到
我已经成功创建了一组 QlineEdits 并为每个 LineEdit 分配了一个对象名称,但不幸的是,当我尝试读取并将它们放入 QStringList 我收到一条错误消息: "Textbox was
我是一名优秀的程序员,十分优秀!