Qt — Как добавить полосу прокрутки для оси x большого QBarChart

Я делаю гистограмму с подсчетом каждого пикселя в изображении в градациях серого. Это означает, что у меня есть 255 баров в моей гистограмме. Похоже на ниже, и я не могу заставить его расширяться.

введите описание изображения здесь

И это код, который я написал:

Histogram::Histogram()
{
ui = std::make_unique<Ui_GraphWindow>();
ui->setupUi(this);
setAttribute(Qt::WA_DeleteOnClose, true); // delete the object after the window is closedui->chartView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
ui->chartView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
}

void Histogram::display(QImage * image)
{
show();

std::map<size_t, size_t> colorCount;
for (int i = 0; i < 256; i++) {
colorCount[i] = 0;
}

for (int i = 0; i < image->width(); i++) {
for (int j = 0; j < image->height(); j++) {
auto val = qGray(image->pixel(i, j));
colorCount[val]++;
}
}
QStringList categories;std::vector<QBarSet*> sets(colorCount.size());
QBarSeries *series = new QBarSeries();

for (int i = 0; i < colorCount.size(); i++) {
sets[i] = new QBarSet(std::to_string(i).c_str());

*sets[i] << colorCount[i];
sets[i]->setColor(QColor(i, i, i));
sets[i]->setBorderColor(QColor(255, 255, 255));
series->append(sets[i]);
}

QChart *chart = new QChart();
chart->addSeries(series);
chart->setTitle("Simple barchart example");
chart->setAnimationOptions(QChart::SeriesAnimations);

QBarCategoryAxis *axis = new QBarCategoryAxis();
chart->createDefaultAxes();
axis->append(categories);
chart->setAxisX(axis, series);

chart->legend()->setVisible(false);
ui->chartView->setChart(chart);
ui->chartView->setRenderHint(QPainter::Antialiasing);
}

Даже если я добавлю полосы прокрутки, это не сработает. Я хочу иметь возможность прокручивать по горизонтали. Я пытался использовать zoomIn() но это не сработало, и scale() делает его больше, но полосы прокрутки не появляются, и я вижу только часть графика.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector