Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
2 / 2 / 1
Регистрация: 28.09.2013
Сообщений: 255
1

Crash из-за коннекта

21.02.2016, 14:53. Показов 1184. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Программа даже не запускается из-за connect() в mainWidget.cpp. Если убрать все ОК.

main.cpp
Кликните здесь для просмотра всего текста
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
#include "mainwidget.h"
#include <QApplication>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWidget w;
    w.setGeometry(50,50,400,200);
    w.setWindowTitle("Commis Voyageur");
    w.show();
    return a.exec();
}


MainWidget.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
#ifndef MAINWIDGET_H
#define MAINWIDGET_H
 
#include "mapframe.h"
#include <QWidget>
#include <QPushButton>
#include <QVBoxLayout>
#include <QHBoxLayout>
 
class MainWidget : public QWidget
{
    Q_OBJECT
public:
    explicit MainWidget(QWidget *parent = 0);
private:
    MapFrame *mapFrame;
    QPushButton *bt;
    QPushButton *clearButton;
    QHBoxLayout *mainLayout;
    QVBoxLayout *leftLayout;
};
 
#endif // MAINWIDGET_H


MainWidget.cpp
Кликните здесь для просмотра всего текста
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "mainwidget.h"
 
MainWidget::MainWidget(QWidget *parent) : QWidget(parent)
{
    connect(clearButton, SIGNAL(clicked(bool)), mapFrame, SLOT(deletePoints()) ); //из-за него крэш
    mapFrame = new MapFrame;
    bt = new QPushButton("Go");
    clearButton = new QPushButton("Очистить");
    mainLayout = new QHBoxLayout;
    leftLayout = new QVBoxLayout;
 
    leftLayout->addWidget(bt);
    leftLayout->addWidget(clearButton);
    mainLayout->addLayout(leftLayout);
    mainLayout->addWidget(mapFrame);
    setLayout(mainLayout);
}


MapFrame.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
#ifndef MAPFRAME_H
#define MAPFRAME_H
 
#include <QFrame>
#include <QList>
#include <QPoint>
#include <QPainter>
#include <QMouseEvent>
#include <QPen>
#include <QBrush>
#include <QColor>
 
class MapFrame : public QFrame
{
    Q_OBJECT
public:
    MapFrame(QWidget * parent = 0, Qt::WindowFlags f = 0);
public slots:
    void deletePoints();
protected:
    void paintEvent(QPaintEvent *e);
    void mousePressEvent(QMouseEvent *e);
private:
    QList <QVector2D> points;
    QPainter painter;
};
 
#endif // MAPFRAME_H


MapFrame.cpp
Кликните здесь для просмотра всего текста
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
#include "mapframe.h"
#include <QDebug>
MapFrame::MapFrame(QWidget * parent, Qt::WindowFlags f) : QFrame(parent, f)
{
    setFrameShadow(QFrame::Sunken);
    setFrameShape(QFrame::WinPanel);
    setLineWidth(3);
    setMidLineWidth(1);
    setStyleSheet("background-color:white;");
}
 
void MapFrame::deletePoints()
{
    points.clear();
    update();
}
 
void MapFrame::paintEvent(QPaintEvent *e)
{
    painter.begin(this);
    QColor color("black");
    QBrush brush(color);
    QPen pen(brush,7);
    painter.setPen(pen);
    for(int i = 0; i < points.size(); i++){
        painter.drawPoint(points.at(i).toPoint());
    }
    painter.end();
    QFrame::paintEvent(e);
}
 
void MapFrame::mousePressEvent(QMouseEvent *e)
{
    points.append(QVector2D(e->pos()));
    update();
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.02.2016, 14:53
Ответы с готовыми решениями:

disconnect Коннекта!
Привет. Обязательно ли делать disconnect в сигнально\слотовой связи? сейчас при отладке сделал...

Проверка Коннекта
День добрый! В общем нужен метод, проверяющий, возможен ли коннект к базе данных или нет. ...

Отсутствие коннекта
SQL 2005 все службы запущены, IIS настроен, но при коннекте к БД выдается следующая ошибка: При...

Время коннекта
Работаю с проксями. Как можно ограничить время коннекта? т.е если прошло,например,более 10 сек,то...

2
690 / 463 / 161
Регистрация: 01.10.2015
Сообщений: 1,272
21.02.2016, 14:58 2
Лучший ответ Сообщение было отмечено vab9petryk как решение

Решение

строку 5 файла MainWidget.cpp (с коннектом) перенесите в конец конструктора
1
2 / 2 / 1
Регистрация: 28.09.2013
Сообщений: 255
21.02.2016, 14:58  [ТС] 3
Вот я тупой. Нужно коннекты писать после выделения памяти под указатель.
Проблема решена.
0
21.02.2016, 14:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.02.2016, 14:58
Помогаю со студенческими работами здесь

Ошибка коннекта к MSSQL
Вопрос, наверное, задавали 100500 раз, но все же, не могу приконнектиться к бд MSSQL. Честно...

Ошибка коннекта с бд oracle
Добрый день, только начинаю изучение бд. Подскажите, может ли быть такое что не может произойти...

Коннекта нет к серверу
Проблема возникла. С одного юзера нет коннекта к sql server'у. При подключении к базе пишет Login...

Правильное осуществления коннекта
Правильно я ли понимаю запись коннекта: connect(виджет с которым производиться действия,...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru