Bonjour,
Dans une application Qt avec widgets, j'aimerais savoir s'il est possible d'incorporer une image vectorielle (svg) en fond de fenêtre (QMainWindow ou QDialog). Et comment ?
Merci.
Bonjour,
Dans une application Qt avec widgets, j'aimerais savoir s'il est possible d'incorporer une image vectorielle (svg) en fond de fenêtre (QMainWindow ou QDialog). Et comment ?
Merci.
Je précise un petit peu la question :
Afficher un fichier svg est apparemment facile
Mon problème est le redimensionnement de l'image. Un 0 0 0 0 strech strech n'est pas utilisable en StyleSheet. Utiliser le paint de la fenêtre... ou un QLabel en fond d'écran
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 /* QT += svg #include <QtSvg> */ ui->setupUi(this); setStyleSheet( "background-image: url(:/svg/newtux.svg);" "background-position: top left; " "background-repeat: no-repeat;");Il n'y a pas mieux ?
Re,
pour l'instant faute de mieux et faute de temps, j'ai surchargé paintEvent
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 /* QT += svg #include <QtSvg> */ protected: void paintEvent(QPaintEvent *event); private: Ui::MainWindow *ui; QPixmap m_pix;On va dire résolu. Mais s'il y a mieux, je reste preneur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { QSvgRenderer m_renderer(QString(":/svg/newtux.svg")); m_pix = QPixmap(m_renderer.defaultSize()); m_pix.fill(Qt::transparent); QPainter m_painter(&m_pix); m_renderer.render(&m_painter); } void MainWindow::paintEvent(QPaintEvent *event) { Q_UNUSED(event) QPainter m_painter(this); m_painter.fillRect(m_pix.rect(), Qt::transparent); m_painter.drawPixmap(ui->widget->rect(), m_pix); }
Partager