Форум программистов, компьютерный форум CyberForum.ru

Qt

Войти
Регистрация
Восстановить пароль
 
SimonR
18 / 18 / 7
Регистрация: 05.03.2016
Сообщений: 67
Завершенные тесты: 2
#1

Отображение линий на QPainter по данным из QTableWidget - C++ Qt

11.01.2017, 15:48. Просмотров 172. Ответов 1
Метки нет (Все метки)

Есть два окна: первое окно - область для рисования, второе окно - таблица данных. В классе первого окна есть вектор точек, по которым рисуюються линии. Проблема состоит в том, что при считывании данных из таблицы в вектор - программа вылетает.
Не могу понять причины, прошу помощи.

Класс первого окна:
Кликните здесь для просмотра всего текста

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#ifndef WINDOW_H
#define WINDOW_H
 
#include <QDialog>
#include <QPaintEvent>
#include <QVector>
#include <QPainter>
 
#include "table.h"
 
class Table;
 
class Window : public QDialog
{
    Q_OBJECT
 
public:
    Window(QWidget *parent = 0);
    ~Window();
 
    QVector<QPointF> points;
    Table *table;
protected:
            virtual void paintEvent(QPaintEvent *ev);
};
 
#endif // WINDOW_H


Его методы:
Кликните здесь для просмотра всего текста

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include "window.h"
 
Window::Window(QWidget *parent): QDialog(parent)
{
    table = new Table;
    table->show();
 
    QPoint temp;
    for(int i=0; i<10; i++)
    {
        temp.setX(i*30);
        temp.setY(i*40);
        points.push_front(temp);
    }
}
 
Window::~Window()
{
 
}
 
void Window::paintEvent(QPaintEvent *ev)
{
    QPainter painter(this);
 
    for(int i=0; i<9; i++)
        painter.drawLine(points[i], points[i+1]);
 
}


Класс второго окна:
Кликните здесь для просмотра всего текста

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#ifndef TABLE_H
#define TABLE_H
 
#include <QDialog>
#include <QTableWidget>
#include <QTableWidgetItem>
#include <QVBoxLayout>
#include <QPushButton>
 
#include "window.h"
 
class Window;
 
class Table : public QDialog
{
    Q_OBJECT
 
public:
    Table(QWidget *parent = 0);
    ~Table();
 
    QTableWidget *table;
    QPushButton *btn;
    Window *ptr;
 
private slots:
                void Slot();
};
 
 
#endif // TABLE_H


Его методы:
Кликните здесь для просмотра всего текста

C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include "table.h"
 
 
Table::Table(QWidget *parent) : QDialog(parent)
{
    table = new QTableWidget(10,2);
    QTableWidgetItem *item;
 
    for(int i=0; i<10; i++)
        for(int j=0; j<2; j++)
        {
            item = new QTableWidgetItem("1");
            table->setItem(i, j, item);
        }
 
    btn = new QPushButton("ok");
    connect(btn, SIGNAL(clicked(bool)), this, SLOT(Slot()));
 
    QVBoxLayout *lay = new QVBoxLayout;
    lay->addWidget(table);
    lay->addWidget(btn);
 
    this->setLayout(lay);
}
 
Table::~Table()
{
 
}
 
void Table::Slot()
{
    QPointF temp;
 
    for(int i=0; i<10; i++)
    {
        for(int j=0; j<2; j++)
        {
            temp.setX(table->item(i,j)->text().toInt());
            if(j) temp.setY(table->item(i,j)->text().toInt());
        }
 
        ptr->points.push_front(temp);
    }
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2017, 15:48     Отображение линий на QPainter по данным из QTableWidget
Посмотрите здесь:
C++ Qt Что лучше для рисования линий и кругов - QPainter или QGraphicsScene?
QPainter C++ Qt
QPainter C++ Qt
C++ Qt QPainter
Qpainter C++ Qt
C++ Qt QPainter
QT, QPainter C++ Qt
QPainter C++ Qt
QPainter качество C++ Qt
C++ Qt Не активно QPainter
Qt в VS и отрисковка QPainter C++ Qt
Ошибка с QPainter C++ Qt

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mikhail1990
15 / 15 / 3
Регистрация: 22.03.2014
Сообщений: 206
12.01.2017, 12:05     Отображение линий на QPainter по данным из QTableWidget #2
Цитата Сообщение от SimonR Посмотреть сообщение
QVector<QPointF> points;
Цитата Сообщение от SimonR Посмотреть сообщение
QPoint temp;
* * for(int i=0; i<10; i++)
* * {
* * * * temp.setX(i*30);
* * * * temp.setY(i*40);
* * * * points.push_front(temp);
* * }
Вектор типа QPointF, а кладем QPoint
Yandex
Объявления
12.01.2017, 12:05     Отображение линий на QPainter по данным из QTableWidget
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru