c++ 如何将QPixmap缩放为相同大小

nbysray5  于 2023-04-08  发布在  其他
关注(0)|答案(1)|浏览(90)

我在我的GUI中声明了两个图标,并使用Adobe Illustrator调整了它们的大小。但是它们在我的GUI中仍然显示为不同的大小。有什么方法可以在Qt中调整它们的大小吗?非常感谢!

void WToolbar::setCandlesColor()
{
    QIcon icon("./src/icon/toolbar/chart-histogram-01.png");
    QPixmap pixmap = icon.pixmap(QSize(30, 30)); // set desired size here

    SetColor = std::make_shared<QAction>(QIcon(pixmap), QString("Button"), toolbar_.get());
    SetColor->setToolTip("Green Bullish/ Red Bearish");
    SetColor->setIconVisibleInMenu(true);
    toolbar_->addAction(SetColor.get());

    connect(SetColor.get(), &QAction::triggered, plotter_.get(), &WPlotter::colorSwitch);
    connect(SetColor.get(), &QAction::triggered, this, &WToolbar::iconSwitch);
}

void WToolbar::setMA5()
{
    QIcon icon("./src/icon/toolbar/chart-line-up-ma5.png");
    QPixmap pixmap = icon.pixmap(QSize(30, 30)).scaled(QSize(30, 30), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);; // set desired size here

    PlotMA5 = std::make_shared<QAction>(QIcon(pixmap), QString("Button"), toolbar_.get());
    PlotMA5->setToolTip("show/hide MA5");
    PlotMA5->setIconVisibleInMenu(true);
    toolbar_->addAction(PlotMA5.get());

    connect(PlotMA5.get(), &QAction::triggered, plotter_.get(), &WPlotter::plotMA5);
}

在我点击第一个图标后,它变大了... x1c 0d1x

ztigrdn8

ztigrdn81#

我注意到这条线是不可用的:

QPixmap pixmap = icon.pixmap(QSize(30, 30));

但我可以使用样式表作为解决方案。这是我的设置:

void WToolbar::SetToolbarStyle()
{
    QString style = " \
                    QToolBar { \
                        background-color: rgb(28, 27, 29); \
                        spacing: 5px; \
                    } \
                    QToolButton { \
                        padding: 5px; \
                        margin: 0px; \
                        border: none; \
                        border-radius: 3px; \
                        background-color: none; \
                    } \
                    QToolButton:hover { \
                        background-color: rgb(28, 27, 29); \
                    }";

    toolbar_->setStyleSheet(style);
}

并且所有图标的大小都对齐。

相关问题