Я делаю гистограмму с подсчетом каждого пикселя в изображении в градациях серого.Это означает, что у меня есть 255 баров в моей гистограмме.Это похоже на приведенное ниже, и я не могу его развернуть.
И вот код, который я написал:
Histogram::Histogram()
{
ui = std::make_unique<Ui_GraphWindow>();
ui->setupUi(this);
setAttribute(Qt::WA_DeleteOnClose, true); // delete the object after the window is closed
ui->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()
делает его больше, но без полос прокрутки, и я вижу только часть графика.