Сегодня я пытался сфотографировать дескриптор QSlider
, чтобы использовать его в виджете QSlider
с двумя дескрипторами.
Это похоже на следующий вопрос: Ползунок диапазона в Qt (две ручки в QSlider)
Для полноценного решения я не могу использовать простое изображениефайлы.Я попытался создать изображение QSlider
с помощью функции drawComplexControl
, но оно оставляет меня в основном с черным изображением.
Что я здесь не так делаю?Мне кажется, это так просто, но просто не работает.
#include <QApplication>
#include <QPushButton>
#include <QPainter>
#include <QStyleOptionSlider>
int main(int argc, char** args) {
QApplication app(argc, args);
auto slider = new QSlider;
slider->setOrientation(Qt::Orientation::Horizontal);
slider->show();
auto btn = new QPushButton("Create Image");
QObject::connect(btn, &QPushButton::clicked, [&] {
auto style = QApplication::style();
QStyleOptionSlider sliderOptions;
QPixmap pix(slider->size());
auto painter = new QPainter();
painter->begin(&pix);
style->drawComplexControl(QStyle::CC_Slider, &sliderOptions, painter, slider);
pix.save("SliderImage.png");
auto handleRect = style->subControlRect(QStyle::ComplexControl::CC_Slider, &sliderOptions, QStyle::SubControl::SC_SliderHandle, slider);
QPixmap handlePix = pix.copy(handleRect);
handlePix.save("SliderHandleImage.png");
painter->end();
});
btn->show();
app.exec();
}