Skip to content

French

A forum for those speaking French

146 Topics 766 Posts
  • Problème d'installation du driver QMySql

    Solved
    27
    0 Votes
    27 Posts
    3k Views
    hskoglundH

    Edit: Good! I made a post about copying but it was not needed :-)

  • 0 Votes
    5 Posts
    790 Views
    Axel SpoerlA

    Ce n'est pas l'âge ! Si nous commençons à dire : "Avant, Qt (ou la vie) était mieux", c'est que nous sommes trop vieux !

  • :-1: erreur : cannot find -lGL

    Moved Solved
    4
    0 Votes
    4 Posts
    464 Views
    jsulmJ

    @poloassado Bottom right: "Topic Tools/Mark as Solved"

  • Problème avec QAXobject et excel

    Unsolved
    9
    0 Votes
    9 Posts
    778 Views
    SGaistS

    Parfait !

    Il ne reste plus qu'à marquer la discussion comme résolue pour que les autres membres du forum sachent qu'une solution a été trouvée.

  • QMSQL Driver not load sur Mac

    Locked Unsolved
    2
    0 Votes
    2 Posts
    364 Views
    SGaistS

    Bonjour,

    Veuillez ne pas poser la même question dans plusieurs sous-forum (hormis si c'est dans votre langue maternelle et dans le forum classique en anglais).

    Duplicata.

    Je ferme celui-ci car l'original a été déplacé dans cette section.

  • QT 6.3.0 QSQLDRIVER not loaded sur Mac

    Moved Unsolved
    2
    0 Votes
    2 Posts
    345 Views
    SGaistS

    Bonjour et bienvenu sur devnet,

    La langue officielle du forum est l'anglais mais il y a une section internationale avec un forum en français. Je vous recommande donc de poster sur celui-là.

    Ceci dit, vous êtes mal engagé car vous sembler suivre la documentation pour Qt 5 et il y a eu des changements dans Qt 6. L'usage de cmake par exemple en place de qmake.

  • probleme avec Qlist

    Unsolved
    3
    0 Votes
    3 Posts
    484 Views
    S

    problème résolu
    c'est encore plus bête!!

    en fait, la page de code commençait a charger un peu, et je n'ai même pas vu que mon code n'etait pas collé dans une fonction!
    idiot de moi...
    désolé...

  • Lecture base de donnée Access 2019 avec qt

    Moved Unsolved
    28
    0 Votes
    28 Posts
    3k Views
    L

    Bonjour,
    Je pense avoir une réponse à ce problème. Office professionnal 2019 ne fonctionne qu'avec la technologie click to run, ce qui est rédhibitoire pour utiliser les bases de données Access dans d'autres applications. Si vous connaissez une solution de contournement, merci de me l'indiquer.
    Merci une fois de plus de votre aide.

  • 0 Votes
    5 Posts
    804 Views
    G

    @SGaist Merci pour vos conseils à l'avenir , j'éviterai de faire ce genre d'erreur . Bonne fin de journée.

  • 0 Votes
    3 Posts
    433 Views
    F

    Merci, bien sûr.Mais j'y avais pas pensé.
    Bonne soirée

  • 0 Votes
    2 Posts
    663 Views
    AxelViennaA

    Bonjour,
    es-tu sûr que le jpg a la bonne taille et qu'il peut être affiché dans le QPushButton ?
    Voici une petite méthode pour mettre une icône à la bonne taille.
    Salutations de Vienne, où il fait froid, dans le lockdown.
    Axel

    QImage tint(QString icon, QColor color, qreal strength, int w, int h) { QImage src = QIcon(icon).pixmap(QSize(w,h)).toImage(); if(src.isNull()) return QImage(); QGraphicsScene scene; QGraphicsPixmapItem item; item.setPixmap(QPixmap::fromImage(src)); QGraphicsColorizeEffect effect; effect.setColor(color); effect.setStrength(strength); item.setGraphicsEffect(&effect); scene.addItem(&item); QImage res = src; QPainter ptr(&res); scene.render(&ptr, QRectF(), src.rect() ); return res; }
  • Signals et Slots entre objets de classes différentes

    Unsolved
    4
    0 Votes
    4 Posts
    472 Views
    SGaistS

    Donc c'est à TimeLinePart3 de transmettre l'information plus haut à CustomLine qui pourra être connecté au label ou en fonction de l'information transmise le slot devrait être dans MainWindow pour mettre à jour le label.

  • childAt provoque une erreur fatale

    Solved
    3
    0 Votes
    3 Posts
    371 Views
    M

    C'était ça.

  • Drag & Drop d'un Widget

    Solved
    5
    0 Votes
    5 Posts
    838 Views
    M

    J'ai fini par réussir à partir de l'exemple cité ci-dessu.

    Voici le code :

    mainwidget.h

    #ifndef WIDGETPARENT_H #define WIDGETPARENT_H #include <QObject> #include <QtWidgets> #include <QPainter> #include <QPen> QT_BEGIN_NAMESPACE class QDragEnterEvent; class QDropEvent; QT_END_NAMESPACE class MainWidget : public QWidget { Q_OBJECT public: explicit MainWidget(QWidget *parent = nullptr); protected: void paintEvent(QPaintEvent *event) override; void dragEnterEvent(QDragEnterEvent *event) override; void dragMoveEvent(QDragMoveEvent *event) override; void dropEvent(QDropEvent *event) override; void mousePressEvent(QMouseEvent *event) override; signals: public slots: }; #endif // WIDGETPARENT_H

    mainwindow.h

    #ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QObject> #include <QWidget> class MainWindow : public QWidget { public: explicit MainWindow(QWidget *parent = nullptr); protected: }; #endif // MAINWINDOW_H

    movable_child_widget.h

    #ifndef MOVABLE_CHILD_WIDGET_H #define MOVABLE_CHILD_WIDGET_H #include <QtWidgets> #include <QLabel> class Movable_Child_Widget : public QLabel { public: Movable_Child_Widget(const QString &text, QWidget *parent); QString labelText() const; private: QString m_labelText; }; #endif // MOVABLE_CHILD_WIDGET_H

    main.cpp

    #include <QApplication> #include "mainwindow.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); #ifdef QT_KEYPAD_NAVIGATION QApplication::setNavigationMode(Qt::NavigationModeCursorAuto); #endif MainWindow window; bool smallScreen = QApplication::arguments().contains(QStringLiteral("-small-screen")); if (smallScreen) window.showFullScreen(); else window.show(); return app.exec(); }

    mainwidget.cpp

    #include "mainwidget.h" #include "movable_child_widget.h" static inline QString MemeFamilleDeProgrammes() { return QStringLiteral("application/x-ceTypeDeProgramme"); } // MemeFamilleDeProgrammes définit un type personnalisé de données à transmettre au presse papier. // Si deux occurences de ce même programme sont lancées, il sera ainsi possible de passer des widgets // d'un programme à l'autre. MainWidget::MainWidget(QWidget *parent) : QWidget(parent) { this->setFixedWidth(1000); this->setFixedHeight(100); Movable_Child_Widget *newChild = new Movable_Child_Widget("Child widget", this); newChild->setAttribute(Qt::WA_DeleteOnClose); QPalette pal = QPalette(); this->setGeometry(0, 0, 600, 100); pal.setColor(QPalette::Window, QColor("#CC773C")); this->setAutoFillBackground(true); this->setPalette(pal); setAcceptDrops(true); // <------------------------ Important de le mettre dans le parent du widget à déplacer } void MainWidget::paintEvent(QPaintEvent *event) { Q_UNUSED(event); QPainter painter(this); painter.setPen(Qt::blue); //painter.setBrush(QBrush("#539e47")); painter.drawRect(0, 0, this->width()-1, this->height()-1); // on place les quarts d'heures QPen pen0(Qt::green); pen0.setWidth(1); pen0.setStyle(Qt::DashDotLine); painter.setPen(pen0); for (int i=0; i<=24*4; i++){ painter.drawLine(int (i*this->width()/96),int (0.5*this->height()-10), int (i*this->width()/96), int (0.5*this->height()+10)); } // on place les heures QPen pen1(Qt::blue); pen1.setWidth(3); painter.setPen(pen1); //painter.setPen(Qt::blue); for (int i=0; i<=24; i++){ painter.drawLine(int (i*this->width()/24), int (0.5*this->height()-10), int (i*this->width()/24), int (0.5*this->height()+10)); } //updateGeometry(); } void MainWidget::dragEnterEvent(QDragEnterEvent *event) { if (event->mimeData()->hasFormat(MemeFamilleDeProgrammes())) { if (children().contains(event->source())) { event->setDropAction(Qt::MoveAction); event->accept(); } else { event->acceptProposedAction(); } } else if (event->mimeData()->hasText()) { event->acceptProposedAction(); } else { event->ignore(); } } void MainWidget::dragMoveEvent(QDragMoveEvent *event) { if (event->mimeData()->hasFormat(MemeFamilleDeProgrammes())) { if (children().contains(event->source())) { event->setDropAction(Qt::MoveAction); event->accept(); } else { event->acceptProposedAction(); } } else if (event->mimeData()->hasText()) { event->acceptProposedAction(); } else { event->ignore(); } } void MainWidget::dropEvent(QDropEvent *event) { if (event->mimeData()->hasFormat(MemeFamilleDeProgrammes())) { const QMimeData *mime = event->mimeData(); QByteArray itemData = mime->data(MemeFamilleDeProgrammes()); QDataStream dataStream(&itemData, QIODevice::ReadOnly); QString text; QPoint offset; dataStream >> text >> offset; Movable_Child_Widget *newChild = new Movable_Child_Widget(text, this); newChild->move(event->pos() - offset); newChild->show(); newChild->setAttribute(Qt::WA_DeleteOnClose); if (event->source() == this) { event->setDropAction(Qt::MoveAction); event->accept(); } else { event->acceptProposedAction(); } } else if (event->mimeData()->hasText()) { QStringList pieces = event->mimeData()->text().split(QRegularExpression(QStringLiteral("\\s+"))); QPoint position = event->pos(); for (const QString &piece : pieces) { Movable_Child_Widget *newChild = new Movable_Child_Widget(piece, this); newChild->move(position); newChild->show(); newChild->setAttribute(Qt::WA_DeleteOnClose); position += QPoint(newChild->width(), 0); } event->acceptProposedAction(); } else { event->ignore(); } } void MainWidget::mousePressEvent(QMouseEvent *event) { Movable_Child_Widget *child = static_cast<Movable_Child_Widget*>(childAt(event->pos())); if (!child) return; QPoint hotSpot = event->pos() - child->pos(); QByteArray itemData; QDataStream dataStream(&itemData, QIODevice::WriteOnly); dataStream << child->labelText() << QPoint(hotSpot); QMimeData *mimeData = new QMimeData; mimeData->setData(MemeFamilleDeProgrammes(), itemData); mimeData->setText(child->labelText()); QDrag *drag = new QDrag(this); drag->setMimeData(mimeData); const QPixmap *ch = child->pixmap(); drag->setPixmap(*ch); drag->setHotSpot(hotSpot); child->hide(); //if (drag->exec(Qt::MoveAction | Qt::CopyAction, Qt::CopyAction) == Qt::MoveAction) if (drag->exec(Qt::MoveAction)) child->close(); else child->show(); }

    mainwindow.cpp

    #include "movable_child_widget.h" #include "mainwindow.h" #include "mainwidget.h" MainWindow::MainWindow(QWidget *parent) : QWidget(parent) { setWindowTitle(tr("Fenêtre principale")); // QPalette newPalette = palette(); // Fenêtre principale newPalette.setColor(QPalette::Window, Qt::gray); // setPalette(newPalette); // this->setWindowState(Qt::WindowMaximized); // this->setFixedSize(2000, 1000); // MainWidget *Widget1 = new MainWidget(this); // Création d'un premier widget Widget1->move(200, 200); // MainWidget *Widget2 = new MainWidget(this); // Création d'un second widget Widget2->move(200, 400); // }

    movable_child_widget.cpp

    #include "movable_child_widget.h" Movable_Child_Widget::Movable_Child_Widget(const QString &text, QWidget *parent) : QLabel(parent) { QFontMetrics metric(font()); QSize size = metric.size(Qt::TextSingleLine, text); QImage image(size.width() + 12, size.height() + 12, QImage::Format_ARGB32_Premultiplied); image.fill(qRgba(0, 0, 0, 0)); QFont font; font.setStyleStrategy(QFont::ForceOutline); QLinearGradient gradient(0, 0, 0, image.height()-1); gradient.setColorAt(0.0, Qt::white); gradient.setColorAt(0.2, QColor(200, 200, 255)); gradient.setColorAt(0.8, QColor(200, 200, 255)); gradient.setColorAt(1.0, QColor(127, 127, 200)); QPainter painter; painter.begin(&image); painter.setRenderHint(QPainter::Antialiasing); painter.setBrush(gradient); painter.drawRoundedRect(QRectF(0.5, 0.5, image.width()-1, image.height()-1), 25, 25, Qt::RelativeSize); painter.setFont(font); painter.setBrush(Qt::black); painter.drawText(QRect(QPoint(6, 6), size), Qt::AlignCenter, text); painter.end(); QPushButton *bt = new QPushButton ("bt", this); bt->move(this->width()/2, 0); setPixmap(QPixmap::fromImage(image)); m_labelText = text; } QString Movable_Child_Widget::labelText() const { return m_labelText; }
  • 0 Votes
    30 Posts
    5k Views
    R

    @SGaist
    sorry sir, sorry for this message and i apologies

  • 0 Votes
    2 Posts
    350 Views
    SGaistS

    Hi,

    Do you realize that you created a new thread in the French sub forum asking for some code in English ?

  • 0 Votes
    1 Posts
    304 Views
    No one has replied
  • 0 Votes
    3 Posts
    577 Views
    P

    Bonjour,

    Merci pour la réponse. J'ai téléchargé l'installer sur le site de Qt et j'ai simplement lancé l'installation, comme d'habitude.

    J'ai repris l'ancienne version de Qt Creator car je n'avais pas de soucis avec (ne sachant pas de où venait le problème).

    J'ai bien pensé aussi à un problème de signature ou de permission... Mais là... Je sèche !

    Edit : J'ai tout désinstallé, tout réinstallé avec encore une autre version (de la même façon qu'avec les autres tentatives) et pour une raison que je ne m'explique pas vraiment, ça a correctement fonctionné au premier lancement, et de nouveau, ça ne fonctionne plus, sans que j'aie rien fait en rapport avec Qt entre temps...

    Edit 2 : J'ai trouvé ! Par hasard, je suis allé voir dans les préférences systèmes, en ultime recours...
    screen

    Il faut absolument décocher la case. Je ne sais pas pourquoi elle l'était... Bref ! J'ai refait le test inverse pour être sûr, si c'est coché, le problème est systématiquement présent !

    En espérant que ça aidera certains 😉

  • Formulaire Qgis avec QtCreator( fichier .ui)

    Unsolved
    4
    0 Votes
    4 Posts
    609 Views
    SGaistS

    Justement, la transition faite n'est pas claire. Les formulaires QGIS ont l'air d'être 100% html et non fait à partir de widget comme Qt.

  • Mon widget ne s'affiche pas

    Unsolved
    4
    0 Votes
    4 Posts
    738 Views
    SGaistS

    Pourquoi le widget principal n'est pas celui du scroll area ?

    Cette partie n'est pas claire.

    Si tout doit être présenté par le scroll area, alors il faut que tout soit logé dans un widget qui sera mis sur le scroll area.