© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB
15 мая 2018 г. 8:59

Работа с векторами.

Доброе время суток.

Создал новый класс 'custompalette'. Он хранит два вектора QPushButton и QColor.
Затем заполняю вектор QPushButton кнопками. Но при попытке изменить стиль кнопки программа принудительно завершается.
custompalette.h#include <QPushButton>
#include <QColor>
#include <QVector>
class CustomPalette
{
public:
    CustomPalette();
    QVector<QPushButton*> *colorPushButton;
    QVector<QColor*> *colorButton;
};
custompalette.cpp
CustomPalette::CustomPalette()
{
    colorPushButton = new QVector<QPushButton *>(14);
    colorButton = new QVector<QColor *>(14);
}
paint.h
....
public:
   ....
   CustomPalette *palette;
....
paint.cpp
palette = new CustomPalette();
palette->colorPushButton->push_back(ui->ButtomColor_1);
....
palette->colorPushButton->push_back(ui->ButtomColor_2);
///изменяю стиль первой кнопки
palette->colorPushButton->at(1)->setStyleSheet("QPushButton{background:#000080;}"); \\ из-за этой строчки крашится программа 
Заранее спасибо

Добрый день.


Вай, как страшно это выглядит.
Создавайте вектор в стеке, без выделения в куче. Когда вы создаёте его с указание размера, то все 14 "ячеек" будут заполнены nullptr.
Подозреваю, что push_back вам просто добавляет ещё элементы и вы в итоге обращаетесь к nullptr вместо объекта, в итоге программа крашится.

В общем пишите так

заголовочник
#include <QColor>
#include <QVector>
class CustomPalette
{
public:
    CustomPalette();
    QVector<QPushButton*> colorPushButton;
    QVector<QColor*> colorButton;
};
реализация
CustomPalette::CustomPalette()
{
}
paint.cpp
palette = new CustomPalette();
palette->colorPushButton->push_back(ui->ButtomColor_1);
....
palette->colorPushButton->push_back(ui->ButtomColor_2);
/// изменяю стиль первой кнопки
palette->colorPushButton.at(1)->setStyleSheet("QPushButton{background:#000080;}"); 
и ещё, не забывайте, что программисты считают с нуля, то есть первый элемент в векторе будет иметь индекс 0.

Для Django рекомендую VDS-хостинг TIMEWEB

Ответы

Только авторизованные пользователи могут отвечать на форуме.
Пожалуйста, авторизуйтесь или зарегистрируйтесь
19 октября 2018 г. 8:05
Василий Ильченко

C++ - Тест 001. Первая программа и типы данных

  • Результат:66баллов,
  • Очки рейтинга-1
18 октября 2018 г. 16:14
druidx

C++ - Тест 002. Константы

  • Результат:25баллов,
  • Очки рейтинга-10
18 октября 2018 г. 15:58
druidx

C++ - Тест 001. Первая программа и типы данных

  • Результат:80баллов,
  • Очки рейтинга4
Последние комментарии
19 октября 2018 г. 7:59
Евгений Легоцкой

Python 3 - Урок 001. Введение

Добрый день! Вот это линуксовая директива #!/usr/bin/python3 Указывает, где находится python пакет в системе. А вы видимо под windows разрабатываете. Попробуйте просто у...
19 октября 2018 г. 7:54
Abdurashid Parpieff

Python 3 - Урок 001. Введение

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:06:47) [MSC v.1914 32 bit (Intel)] on win32 Type "copyright", "credits" or "license()" for more information. >>> #!/usr/bi...
18 октября 2018 г. 8:31
Евгений Легоцкой

Qt/C++ - Урок 006. QSqlQueryModel - Таблицы в Qt с помощью SQL-запросов

Как-то даже странно, а вы что ли в отдельный поток убрали базу данных? То есть изначально инстанс создаётся в одном потоке, а все QSqlQuery в другом потоке? Они должны находиться в одном поток...
17 октября 2018 г. 8:43
pasagir

Qt/C++ - Урок 006. QSqlQueryModel - Таблицы в Qt с помощью SQL-запросов

Не получается bool DataBase::insertDataIntoDB(QVariantList data){ QSqlQuery query(db); QString str; qDebug()<<"InsertInsertInsertInsertInsert"<<QThread::curre...
17 октября 2018 г. 7:09
Евгений Легоцкой

Qt/C++ - Урок 006. QSqlQueryModel - Таблицы в Qt с помощью SQL-запросов

Попробуйте передать инстанс базы данных в конструктор QSqlQuery QSqlQuery q(db);
Сейчас обсуждают на форуме
19 октября 2018 г. 11:52
Евгений Легоцкой

Уведомления о лайках и дислайках

Вообще планируется система ачивок. А рейтинг есть в зачаточном состоянии. Но для системы ачивок нужно собраться с духом и выделить приличную кучку времени. Помимо того, что сами ачивки п...
18 октября 2018 г. 12:15
Михаиллл

Настройка Qt Creator для Android

все галочки включены.
18 октября 2018 г. 8:16
Allyans .

Работа с WinAPI в QT(изменение title bar)

Хорошо, я попробуй по вашей статье.
15 октября 2018 г. 12:45
Allyans .

QGraphicsItem change color

Хорошо)
11 октября 2018 г. 10:13
Arrow

Работа с WebView в QML

Нашел в чем проблема. Пишу на случай если кому-то попадется такое же счастье с WebView как и мне. Проблема как оказалась с Debug версией, так как в Release и Profile все работает (...
Присоединяйтесь к нам в социальных сетях